码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 69题 思考关于二分查找的模版

时间:2019-01-25 11:43:39      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:注意   二分   square   ant   答案   tee   etc   class   mys   

leetcode 69,

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.

 

注意看代码里面的注释

class Solution {
    public int mySqrt(int x) {
        if (x<=1) return x; 
        long left = 0;
        long right = x;
        while (left < right) {
            long mid = (left + right + 1)/2;
            if (mid * mid == x) { 
                return (int)mid;
            } else if (mid * mid < x) {//关键就是当mid*mid < x的时候,mid可不可能成为结果,这道题里面答案显然是可能的, 但是对275来说就不是这样了, 因为必须是至少h个大于h的才行,所以应该用 mid = (left + right)/2   left = mid + 1;  right = mid;
                left = mid;
            } else {
                right = mid - 1;
            }
        }
        return (int)(left);
    }
}

 

 

二分模版

1. 开始对于特殊情况, len <= 1的情况做特殊处理。

2. 模版一  mid = (left + right)/2;  left = mid + 1; right = mid;  leetcode 275题, 模版二  mid = (left + right + 1)/2;  left = mid; right = mid - 1;   应用于leetcode 69

3. 对于一定有解的情况直接返回即可, 如果可能没有结果的,最后一定要对left进行检验( 这个操作可能没用,但是不会有坏处 )

leetcode 69题 思考关于二分查找的模版

标签:注意   二分   square   ant   答案   tee   etc   class   mys   

原文地址:https://www.cnblogs.com/tobemaster/p/10317773.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!