367. 有效的完全平方数

140 阅读1分钟

思路

如果num是完全平方数,那么在二分查找的过程while()中必然能找到一个整数mid,使得mid^2 = num。

关联第69题。

class Solution {
    public boolean isPerfectSquare(int num) {
        int low = 1;
        int high = num;
        while (low <= high) {
            int mid = low + (high - low) / 2;
            if ((long) num == (long) mid * mid) { // long
                return true;//在二分查找的过程中找到了一个整数mid,使得mid^2 = num
            } else if ((long) num > (long) mid * mid) {
                low = mid + 1;
            } else {
                high = mid - 1;
            }
        }
         return false;//在二分查找的过程中未找到一个整数mid,使得mid^2 = num

    }
}