367. Valid Perfect Square
Given a positive integer num, write a function which returns True if num is a perfect square else False.
Note: Do not use any built-in library function such as sqrt
.
Example 1:
Input: 16Returns: True
Example 2:
Input: 14Returns: False 思路:这里使用二分法来进行查找,注意如果直接使用乘法会溢出,因此这里使用了除法。
1 bool isPerfectSquare(int num) { 2 if (num == 1) 3 return 1; 4 int b = 0; 5 int e = num / 2; 6 while (b <= e) 7 { 8 int m = (b + e) / 2; 9 if (num%m==0&&num/m ==m)10 return true;11 else if (m >= num/m)12 e = m - 1;13 else14 b = m + 1;15 }16 return false;17 }
如果你有任何疑问或新的思路,欢迎在下方评论。