class Solution {
public:
bool isPerfectSquare(int num) {
if (num < 1) return false;
if (num == 1) return true;
int left = 1, right = num/2;
long mid, tmp;
while(left <= right) {
mid = (left + right) / 2;
tmp = mid*mid;
if (tmp == num) {
return true;
} else if (tmp > num) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return false;
}
};