Binary Search - Valid Perfect Square
Difficulty : Easy
Binary Search , Same solution for Search Insert Position
Problem
Given a positive integer num, return true if num is a perfect square or false otherwise.
- Input :
16, 14
- Output :
True, False
Solution
- This is a type of problem which can be solved by Binary Search in
O(log n)
time. - The square root will be any number between
0 - num
. Thechnically it will be much lower thannum
so the Binary Search solution can certainly be optimized, however the intention is to identify that the problem can be solved using Binary Search.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def is_perfect_square(num):
l, r = 0, num
# Binary Search
while l <= r:
mid = (l+r)//2
square = mid*mid
if square == num:
return True
elif square > num:
r = mid-1
else:
l = mid+1
return False
print(is_perfect_square(15))
print(is_perfect_square(16))
1
2
False
True
This post is licensed under CC BY 4.0 by the author.