LeetCode - Sqrt(x)

Posted incrediblechangshuo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode - Sqrt(x)相关的知识,希望对你有一定的参考价值。

Implement int sqrt(int x).

Compute and return the square root of x, where x is guaranteed to be a non-negative integer.

Since the return type is an integer, the decimal digits are truncated and only the integer part of the result is returned.

Example 1:

Input: 4
Output: 2
Example 2:

Input: 8
Output: 2
Explanation: The square root of 8 is 2.82842..., and since 
             the decimal part is truncated, 2 is returned.

思路:用二分法来做,average时间复杂度 O(logn)

class Solution 
    public int mySqrt(int x) 
    
        if (x<2) return x;
        
        int l = 0;
        int h = x;
        
        int res = 0;
        while (l <= h) 
            int m = l + (h-l)/2;
            if (m <= x/m && (m+1) > x/(m+1))
                return m;
             
            if (m > x/m) 
                h = m-1;   
            
            else if (m < x/m) 
                res = m;
                l = m+1;
            
        
        return res;
    

 

以上是关于LeetCode - Sqrt(x)的主要内容,如果未能解决你的问题,请参考以下文章

#Leetcode# 69. Sqrt(x)

LeetCode 69 Sqrt(x)

LeetCode 69. Sqrt(x)

[LeetCode] 69. Sqrt(x)

一天一道LeetCode#69. Sqrt(x)

69. Sqrt(x)(LeetCode)