367. 有效的完全平方数

题目:

思路:

【1】这道题的难度在于int数据会存在溢出的情况,所以用乘法是不可行的,虽然逻辑上能说的通,而且就算换上long类型也一样扛不住啊,所以改用除法,但是除法会有一个问题就是不能除以0【这个需要考虑处理】。

代码展示:

//时间0 ms 击败 100%
//内存38.2 MB 击败 39.91%
class Solution {
    public boolean isPerfectSquare(int num) {
        if (num == 1) return true;
        int l = 0 , r = num;
        while (l < r){
            int mid = (r - l) / 2 + l;
            long sum = num/mid;
            if (sum == mid){
                l = mid;
                break;
            }else if (sum < mid){
                r = mid;
            }else {
                l = mid + 1;
            }
        }
        return l*l == num;
    }
}

 

posted @ 2023-08-14 12:27  忧愁的chafry  阅读(4)  评论(0编辑  收藏  举报