LeetCode 367.有效的完全平方数(C++)
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
说明:不要使用任何内置的库函数,如 sqrt
。
示例 1:
输入:16 输出:True
示例 2:
输入:14 输出:False
需要注意mid * mid超过有效范围
#include <iostream> using namespace std; bool isPerfectSquare(int num) { long long left = 0,right = num; long long squ, mid; while (left <= right) { mid = (left + right) / 2; //mid = (left + right) >> 1 squ = mid * mid; if (squ == num) return true; else if (squ > num) right = mid - 1; else left = mid + 1; } return false; } int main() { cout << boolalpha << isPerfectSquare(16); system("PAUSE"); return 0; }