Question
Given a positive integer num, return true
if num
is a perfect square or false
otherwise.
A perfect square is an integer that is the square of an integer. In other words, it is the product of some integer with itself.
You must not use any built-in library function, such as sqrt
.
Example 1:
Input: num = 16
Output: true
Explanation: We return true because 4 * 4 = 16 and 4 is an integer.
Example 2:
Input: num = 14
Output: false
Explanation: We return false because 3.742 * 3.742 = 14 and 3.742 is not an integer.
Constraints:
1 <= num <= 231 - 1
Algorithm
Very similar question to the 69. Sort(n), in another perspective, you do the math and check if the square root of this number is an integer, or the square root multiple square root is the original number.
Code
class Solution { public boolean isPerfectSquare(int num) { long x = num; while (x * x > num) { x = (x + num / x) / 2; } return x * x == num; } }