题目

Given a positive integer num, write a function which returns True if num is a perfect square else False.

Follow up: Do not use any built-in library function such as sqrt.

Example 1:

  1. Input: num = 16
  2. Output: true

Example 2:

  1. Input: num = 14
  2. Output: false

Constraints:

  • 1 <= num <= 2^31 - 1

题意

判断一个整数是不是完全平方数,要求不能用内置方法。

思路

二分法,注意值越界问题。


代码实现

Java

  1. class Solution {
  2. public boolean isPerfectSquare(int num) {
  3. long left = 1, right = num;
  4. while (left <= right) {
  5. long mid = (right - left) / 2 + left;
  6. if (mid * mid > num) {
  7. right = mid - 1;
  8. } else if (mid * mid < num) {
  9. left = mid + 1;
  10. } else {
  11. return true;
  12. }
  13. }
  14. return false;
  15. }
  16. }