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.