This post is on Valid Perfect Square Leetcode Solution
Table of Contents
Problem statement
In the problem “Valid Perfect Square” we are given a number “num” and we need to check if this number is a perfect square or not. We have to check this without using the built-in sqrt function.
If the number is a perfect square then we will return true else we will return false.
Example
num = 25
true
Explanation:

25 is a valid perfect square as its square root is 5. So, the answer becomes true.
Approach
As we can’t use built-in functions so, the basic approach to solve this problem is to check each number from 1 to num and find its square then check if its square is equal to num. If the square is equal to num then num is a Valid Perfect Square so, we will return true else we will return false.
In spite of linearly checking each number, we can improve the solution by using a binary search approach. In this approach, we need to decide our search range , start point, and endpoint.
- The start point will be 1.
- The endpoint will be num because the square of any number greater than num will be always greater than num.
- So the range for then binary search is 1 to num.
- Now we will find the square of mid. If the square is equal to num then we will return true else:
- if the square is greater than num then our endpoint will reduce to mid-1.
- else start point will become mid+1.
- In the end, if num does not match with any square of number then we will return false.
Code
C++ code for Valid Perfect Square Leetcode Solution
#include <bits/stdc++.h>
using namespace std;
bool isPerfectSquare(int num) {
int s=1,e=num;
while(s<=e)
{
long long int mid=s+(e-s)/2;
if(mid*mid==num)
return true;
else if(mid*mid>num)
e=mid-1;
else
s=mid+1;
}
return false;
}
int main()
{
int num=25;
cout<<boolalpha;
cout<<isPerfectSquare(num)<<endl;
return 0;
}true
Java code for Valid Perfect Square Leetcode Solution
import java.util.Arrays;
public class Tutorialcup {
public static boolean isPerfectSquare(int num){
long s=1,e=num;
while(s<=e)
{
long mid=s+(e-s)/2;
if(mid*mid==num)
return true;
else if(mid*mid>num)
e=mid-1;
else
s=mid+1;
}
return false;
}
public static void main(String[] args) {
int num=25;
boolean ans= isPerfectSquare(num);
System.out.println(ans);
}
}true
Complexity Analysis of Valid Perfect Square Leetcode Solution
Time complexity
The time complexity of the above code is O(logn). Here n is the value of num.
Space complexity
The space complexity of the above code is O(1) because we are using only a variable to store answer.