[Binary search] 367. Effective complete square numbers

367. Efficient Perfect Squares

problem solving ideas

insert image description here

  • use binary search
  • The search interval is [1, num]
  • Compare mid * mid and num and change the search interval
class Solution {
    
    
    public boolean isPerfectSquare(int num) {
    
    
        // 二分查找  
        // 区间就是[1,num.length]

        long left = 1;
        long right = num;
        long mid = 0;

        while(left <= right){
    
    
            mid = left + (right- left)  / 2;
            long sq = mid * mid;
            if(sq > num){
    
    
                right = mid - 1;
            }else if(sq < num){
    
    
                left = mid + 1;
            }else{
    
    
                break;
            }
        }

        return mid * mid == num;
    }
}

Guess you like

Origin blog.csdn.net/qq_44653420/article/details/131626601