C++ 零基础算法100题 - 有效的完全平方数

168 阅读1分钟

题目链接: 367. 有效的完全平方数 - 力扣(LeetCode)

题目描述

image.png

解题思路

  1. 首先定义左右指针
  2. 判断这个数是不是完全平方数,我们要求这个数有没有开方数
  3. 我们定义一个二分查找。查找出mid*mid>=num的这个mid
  4. 我们保持这个mid
  5. 最后判断ans*ans==num,将结果返回

代码实现

class Solution {
public:
    bool isPerfectSquare(int num) {
        long long l=0,r=100000;
        long long ans;
        // 求出他的开方数
        while(l<=r){
            long long mid=(l+r)>>1;
            if(mid*mid>=num){
                ans=mid;
                r=mid-1;
            }else{
                l=mid+1;
            }
        }
        return ans*ans==num;
    }
};