# Largest sub-array whose all elements are perfect squares

Given an array of integer elements, the task is to find the length of the largest sub-array of such that all the elements of the sub-array are perfect squares.

Examples:

Input: arr[] = {1, 7, 36, 4, 49, 2, 4}
Output: 3
Maximum length sub-array with all elements as perfect squares is {36, 4, 49}

Input: arr[] = {25, 100, 2, 3, 9, 1}
Output: 2
Possible sub-array is {25, 100}

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

• Traverse the array from left to right. Initialize a max_length and current_length variable with 0.
• Take an integer and a float variable and for every element of the array store it’s square root in both these variables.
• If both the variables are equal i.e. the current element is a perfect square then increment current_length variable and continue. Otherwise, set current_length = 0.
• At each step, assign max_length as max_length = max(current_length, max_length).
• Print the value of max_length in the end.

Below is the implementation of the above approach:

## C++

 `// C++ program to find the length of the ` `// largest sub-array of an array every ` `// element of whose is a perfect square ` `#include ` `using` `namespace` `std; ` ` `  `// function to return the length of the ` `// largest sub-array of an array every ` `// element of whose is a perfect square ` `int` `contiguousPerfectSquare(``int` `arr[], ``int` `n) ` `{ ` `    ``int` `a; ` `    ``float` `b; ` ` `  `    ``int` `current_length = 0; ` `    ``int` `max_length = 0; ` ` `  `    ``for` `(``int` `i = 0; i < n; i++) { ` `        ``b = ``sqrt``(arr[i]); ` `        ``a = b; ` ` `  `        ``// if both a and b are equal then ` `        ``// arr[i] is a perfect square ` `        ``if` `(a == b) ` `            ``current_length++; ` `        ``else` `            ``current_length = 0; ` ` `  `        ``max_length = max(max_length, current_length); ` `    ``} ` `    ``return` `max_length; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `arr[] = { 9, 75, 4, 64, 121, 25 }; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]); ` ` `  `    ``cout << contiguousPerfectSquare(arr, n); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java program to find the length of the ` `// largest sub-array of an array every ` `// element of whose is a perfect square ` `import` `java.io.*; ` ` `  `class` `GFG { ` `     `  ` `  ` `  `// function to return the length of the ` `// largest sub-array of an array every ` `// element of whose is a perfect square ` ` ``static` `int` `contiguousPerfectSquare(``int` `[]arr, ``int` `n) ` `{ ` `    ``int` `a; ` `    ``float` `b; ` ` `  `    ``int` `current_length = ``0``; ` `    ``int` `max_length = ``0``; ` ` `  `    ``for` `(``int` `i = ``0``; i < n; i++) { ` `        ``b = (``float``)Math.sqrt(arr[i]); ` `        ``a = (``int``)b; ` ` `  `        ``// if both a and b are equal then ` `        ``// arr[i] is a perfect square ` `        ``if` `(a == b) ` `            ``current_length++; ` `        ``else` `            ``current_length = ``0``; ` ` `  `        ``max_length = Math.max(max_length, current_length); ` `    ``} ` `    ``return` `max_length; ` `} ` ` `  `// Driver code ` ` `  `    ``public` `static` `void` `main (String[] args) { ` `            ``int` `arr[] = { ``9``, ``75``, ``4``, ``64``, ``121``, ``25` `}; ` `    ``int` `n = arr.length; ` ` `  `    ``System.out.print(contiguousPerfectSquare(arr, n)); ` `    ``} ` `} ` `// This code is contributed by inder_verma.. `

## Python3

 `# Python 3 program to find the length of  ` `# the largest sub-array of an array every ` `# element of whose is a perfect square ` `from` `math ``import` `sqrt ` ` `  `# function to return the length of the ` `# largest sub-array of an array every ` `# element of whose is a perfect square ` `def` `contiguousPerfectSquare(arr, n): ` `    ``current_length ``=` `0` `    ``max_length ``=` `0` ` `  `    ``for` `i ``in` `range``(``0``, n, ``1``): ` `        ``b ``=` `sqrt(arr[i]) ` `        ``a ``=` `int``(b) ` ` `  `        ``# if both a and b are equal then ` `        ``# arr[i] is a perfect square ` `        ``if` `(a ``=``=` `b): ` `            ``current_length ``+``=` `1` `        ``else``: ` `            ``current_length ``=` `0` ` `  `        ``max_length ``=` `max``(max_length,  ` `                         ``current_length) ` `     `  `    ``return` `max_length ` ` `  `# Driver code ` `if` `__name__ ``=``=` `'__main__'``: ` `    ``arr ``=` `[``9``, ``75``, ``4``, ``64``, ``121``, ``25``] ` `    ``n ``=` `len``(arr) ` ` `  `    ``print``(contiguousPerfectSquare(arr, n)) ` ` `  `# This code is contributed by  ` `# Surendra_Gangwar `

## C#

 `// C# program to find the length of the ` `// largest sub-array of an array every ` `// element of whose is a perfect square ` `using` `System; ` ` `  `class` `GFG { ` `     `  ` `  ` `  `// function to return the length of the ` `// largest sub-array of an array every ` `// element of whose is a perfect square ` `static` `int` `contiguousPerfectSquare(``int` `[]arr, ``int` `n) ` `{ ` `    ``int` `a; ` `    ``float` `b; ` ` `  `    ``int` `current_length = 0; ` `    ``int` `max_length = 0; ` ` `  `    ``for` `(``int` `i = 0; i < n; i++) { ` `        ``b = (``float``)Math.Sqrt(arr[i]); ` `        ``a = (``int``)b; ` ` `  `        ``// if both a and b are equal then ` `        ``// arr[i] is a perfect square ` `        ``if` `(a == b) ` `            ``current_length++; ` `        ``else` `            ``current_length = 0; ` ` `  `        ``max_length = Math.Max(max_length, current_length); ` `    ``} ` `    ``return` `max_length; ` `} ` ` `  `// Driver code ` ` `  `    ``public` `static` `void` `Main () { ` `            ``int` `[]arr = { 9, 75, 4, 64, 121, 25 }; ` `    ``int` `n = arr.Length; ` ` `  `  ``Console.WriteLine(contiguousPerfectSquare(arr, n)); ` `    ``} ` `} ` `// This code is contributed by inder_verma.. `

## PHP

 ` `

Output:

```4
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.