LeetCode 69.x的平方根 题解
题目描述
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。
由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
1 | 示例 1: |
1 | 示例 2: |
算法1
(暴力枚举)
可以从大到小枚举 小于 x 的数字 i, 直到 i * i 小于等于 x 为止,即为我们的要找的答案
但是这种枚举的方式当 x 很大时,容易超时,因此需要进一步优化
(二分查找)
可以考虑单调性,由于从 1 ~ x ,所有的数字都是递增的,因此他们的平方也是递增的,所以具有单调性,可以使用二分查找的方式每次缩小一半的查找方式,因此可以达到 的时间复杂度
1 | class Solution { |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.