# Largest sub-array whose all elements are perfect squares

• Difficulty Level : Basic
• Last Updated : 12 May, 2021

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:
Maximum length sub-array with all elements as perfect squares is {36, 4, 49}
Input: arr[] = {25, 100, 2, 3, 9, 1}
Output:
Possible sub-array is {25, 100}

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);` `    ``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

 ``

## Javascript

 ``

Output:

`4`

My Personal Notes arrow_drop_up