LeetCode --- 69. Sqrt(x)
2015-03-19 21:57
483 查看
题目链接:Sqrt(x)
Implement int sqrt(int x).
Compute and return the square root of x.
这道题的要求是实现int sqrt(int x),即计算x的平方根。
考虑二分,即先令l和r分别为1和x/2+1(x的平方根一定小于等于x/2+1),然后m等于(l+r)/2,不断比较m*m和x的大小。
由于m*m的时候,可能溢出,因此可以用除法代替乘法,或者采用long long类型。
时间复杂度:O(logn)
空间复杂度:O(1)
当然这题也可以采用位操作或者牛顿法。
转载请说明出处:LeetCode --- 69. Sqrt(x)
Implement int sqrt(int x).
Compute and return the square root of x.
这道题的要求是实现int sqrt(int x),即计算x的平方根。
考虑二分,即先令l和r分别为1和x/2+1(x的平方根一定小于等于x/2+1),然后m等于(l+r)/2,不断比较m*m和x的大小。
由于m*m的时候,可能溢出,因此可以用除法代替乘法,或者采用long long类型。
时间复杂度:O(logn)
空间复杂度:O(1)
[code] 1 class Solution{ 2 public: 3 int sqrt(int x) 4 { 5 if(x == 0) 6 return 0; 7 8 int l = 1, r = x / 2 + 1; 9 while(l <= r) 10 { 11 int m = (l + r) / 2; 12 13 if(m <= x / m && m + 1 > x / (m + 1)) 14 return m; 15 16 if(m > x / m) 17 r = m - 1; 18 else if(m < x / m) 19 l = m + 1; 20 } 21 return l; 22 } 23 };
当然这题也可以采用位操作或者牛顿法。
转载请说明出处:LeetCode --- 69. Sqrt(x)
相关文章推荐
- LeetCode - 50/69/367/633 - Pow(x, n)、Sqrt(x)
- 【LeetCode】69. Sqrt(x) (2 solutions)
- 【LeetCode】69. Sqrt(x)解法及注释
- The Solution to LeetCode 69 Sqrt(x)
- leetcode 69. Sqrt(x)
- LeetCode 69. Sqrt(x)
- 【LeetCode】C# 69、Sqrt(x)
- [LeetCode] 69. Sqrt(x) 求平方根
- leetcode 69: Sqrt(x)
- LeetCode---(69)Sqrt(x)
- (java)leetcode-69:Sqrt(x)
- Leetcode刷题记—— 69. Sqrt(x)(求整数x的平方根)
- LeetCode 69 Sqrt(x)
- LeetCode(69) Sqrt(x)
- leetcode 69 implement the sqrt(x)
- LeetCode | 69. Sqrt(x) 数学技巧题
- leetcode 69. Sqrt(x)
- leetcode 69. Sqrt(x) 367. Valid Perfect Square
- [leetcode]#69. Sqrt(x)
- leetcode 69. Sqrt(x)