69. Sqrt(x)

Problem:
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.
Analysis:
The qualified square root satisfies that root*root <= x. So need to cache result under smaller and equal condition.
Solution:


class Solution {
    public int mySqrt(int x) {
        if (x == 0) return 0;
        int low = 1, high = x, res = 1;  
        while (low < high) {  
            int mid = low + (high - low)/2;  
            if (mid <= x/mid) {
              low = mid + 1;
              res = mid;
            } 
            else high = mid;
        }
        return res;
    }
} 

评论

此博客中的热门博文

776. Split BST

663. Equal Tree Partition

532. K-diff Pairs in an Array