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 Returns: True
Example 2:
Input: 14 Returns: False
my answer:
class Solution {
public:
bool isPerfectSquare(int num) {
bool is_perfect_sqr = false;
long val = num; // must use long rather than int
if (val == 1)
is_perfect_sqr = true;
else {
while(val * val > num)
val /= 2;
for (int i = val; i<val*2;i++) {
if (i * i == num)
is_perfect_sqr = true;
}
}
return is_perfect_sqr;
}
};