69. x 的平方根(leetcode)

一、思路链接

https://www.bilibili.com/video/BV1gZ4y1s7d8?t=383

二、具体题目

https://leetcode-cn.com/problems/sqrtx/

三、具体代码

//  一、暴力破解
// var mySqrt = function(x) {
//     if(x<=1) return parseInt(x);
//     for(let i=2; i<=x; i++) {
//         if(i * i >x) {
//             return parseInt(i-1);
//         }  vr
//     }
//     return -1;
// };

// 二、二分法求解
var mySqrt = function(x) {
    if(x <= 1) {
        return x;
    }
    let l = 1;
    let r = x >> 1;
    while((l + 1) < r) {
        let mid = l + ((r - l) >> 1);
        if(mid === (x / mid)) {
            return mid;
        }else if(mid > (x / mid)) {
            r = mid;//r不能为mid-1,因为while的条件限制是(l + 1) < r
        }else {
            l = mid;//l不能为mid+1,因为while的条件限制是(l + 1) < r
        }
    }
    if(r > (x / r)) {
        return l;
    }else {
        return r;
    }
}
上一篇:【力扣】69. x 的平方根


下一篇:BUUCTF - RE - [ACTF新生赛2020]Oruga