letecode [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: 16
Output: true
Example 2:
Input: 14
Output: false
题目大意:
给定一个正整数,判断其是否为某个数的完全平方数。
理 解:
用二分法。左初始化值为1,右初始值为num。将中间值的平方mid*mid与num比较:
若 num/mid > mid,说明mid需要更大,更新left = mid +1;
若 num/mid < mid,说明mid需要更小,更新right = mid -1;
若 num/mid = mid,则判断num%mid是否为0,是则说明num为mid的完全平方数,否则不是。
代 码 C++:
class Solution { public: bool isPerfectSquare(int num) { int left=1,right=num,mid; while(left<=right){ mid = (right-left)/2 + left; if(num/mid > mid){ left = mid + 1; }else if(num/mid < mid){ right = mid - 1; }else{ if(num%mid == 0) return true; else return false; } } return false; } };
运行结果:
执行用时 :0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗 :8.2 MB, 在所有 C++ 提交中击败了5.35%的用户