【LintCode】777. 完全平方数(二分法)

描述

中文English

给出一个正整数 num,写一个函数,要求当这个当num为完全平方数时函数返回True,否则返回False

样例

样例1:

输入: num = 16
输出: True
解释:
sqrt(16) = 4

样例2:

输入: num = 15
输出: False
解释:
sqrt(15) = 3.87
public boolean isPerfectSquare (int num) {
        // write your code here
        long l = 0, r = num;
        while (r - l > 1) {
            long mid = (l + r) / 2;
            if (mid * mid <= num) {
                l = mid;
            } else {
                r = mid;
            }
        }
        long ans = l;
        if (l * l < num) {
            ans = r;
        }
        return ans * ans == num;
    }

你可能感兴趣的:(LintCode)