367. 有效的完全平方数

image-20211104191909465

解题思路:

​ 这题主要是优化的方法采取了二分法的方法,是可以作为一些题目中遍历搜索的优化解的。其余的就是注意int的乘法会造成越界,结果应该转换为long类型来存储。

以下是C++代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public:
bool isPerfectSquare(int num) {
//二分法思路优化
int left=0;
int right=num;
int half;
while(left<=right){
half=(left+right)/2;
long temp=(long)half*half;
if(num==temp){
return true;
}else if(num<temp){
right=half-1;
}else{
left=half+1;
}
}
return false;
}
};