Given ‘N’ number of sticks of length a1, a2, a3…an. The task is to count the number of squares and rectangles possible.
Note: One stick should be used only once i.e. either in any of the squares or rectangles.
Examples:
Input: arr[] = {1, 2, 1, 2}
Output: 1
Rectangle with sides 1 1 2 2
Input: arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}
Output: 0
No square or rectangle is possible
Approach: Below is the step by step algorithm to solve this problem :
- Initialize the number of sticks.
- Initialize all the sticks with it’s lengths in an array.
- Sort the array in an increasing order.
- Calculate the number of pairs of sticks with the same length.
- Divide the total number of pairs by 2, which will be the total possible rectangle and square.
Below is the implementation of above approach:
C++
| // C++ implementation of above approach#include <bits/stdc++.h>usingnamespacestd;// Function to find the possible// rectangles and squaresintrectangleSquare(intarr[], intn){    // sort all the sticks    sort(arr, arr + n);    intcount = 0;    // calculate all the pair of    // sticks with same length    for(inti = 0; i < n - 1; i++) {        if(arr[i] == arr[i + 1]) {            count++;            i++;        }    }    // divide the total number of pair    // which will be the number of possible    // rectangle and square    returncount / 2;}// Driver codeintmain(){    // initialize all the stick lengths    intarr[] = { 2, 2, 4, 4, 4, 4, 6, 6, 6, 7, 7, 9, 9 };    intn = sizeof(arr) / sizeof(arr[0]);    cout << rectangleSquare(arr, n);    return0;} | 
Java
| // Java implementation of above approachimportjava.util.Arrays;classGFG{        // Function to find the possible     // rectangles and squares     staticintrectangleSquare(intarr[], intn)    {        // sort all the sticks         Arrays.sort(arr);        intcount = 0;        // calculate all the pair of         // sticks with same length         for(inti = 0; i < n - 1; i++)         {            if(arr[i] == arr[i + 1])            {                count++;                i++;            }        }        // divide the total number of pair         // which will be the number of possible         // rectangle and square         returncount / 2;    }    // Driver code     publicstaticvoidmain(String[] args)     {        // initialize all the stick lengths         intarr[] = {2, 2, 4, 4, 4, 4, 6, 6, 6, 7, 7, 9, 9};        intn = arr.length;        System.out.println(rectangleSquare(arr, n));    }} // This code is contributed // by PrinciRaj1992 | 
Python3
| # Python3 implementation of above approach # Function to find the possible # rectangles and squares defrectangleSquare( arr, n):     # sort all the sticks     arr.sort()     count =0    #print(" xx",arr[6])    # calculate all the pair of     # sticks with same length     k=0    fori inrange(n-1):        if(k==1):            k=0            continue                if(arr[i] ==arr[i +1]):            count=count+1            k=1                    # divide the total number of pair     # which will be the number of possible     # rectangle and square     returncount/2# Driver codeif__name__=='__main__':# initialize all the stick lengths     arr =[2, 2, 4, 4, 4, 4, 6, 6, 6, 7, 7, 9, 9]     n =len(arr)     print(rectangleSquare(arr, n))# this code is written by ash264 | 
C#
| // C# implementation of above approach usingSystem;classGFG {         // Function to find the possible     // rectangles and squares     staticintrectangleSquare(int[]arr, intn)     {         // sort all the sticks         Array.Sort(arr);         intcount = 0;         // calculate all the pair of         // sticks with same length         for(inti = 0; i < n - 1; i++)         {             if(arr[i] == arr[i + 1])             {                 count++;                 i++;             }         }         // divide the total number of pair         // which will be the number of possible         // rectangle and square         returncount / 2;     }     // Driver code     publicstaticvoidMain(String[] args)     {         // initialize all the stick lengths         int[]arr = {2, 2, 4, 4, 4, 4, 6,                        6, 6, 7, 7, 9, 9};         intn = arr.Length;         Console.WriteLine(rectangleSquare(arr, n));     } } // This code has been contributed// by Rajput-Ji | 
PHP
| <?php// PHP implementation of above approach// Function to find the possible// rectangles and squaresfunctionrectangleSquare($arr, $n){    // sort all the sticks    sort($arr);    $count= 0;    // calculate all the pair of    // sticks with same length    for($i= 0; $i< $n- 1; $i++)     {        if($arr[$i] == $arr[$i+ 1])         {            $count++;            $i++;        }    }    // divide the total number of pair    // which will be the number of possible    // rectangle and square    return($count/ 2);}// Driver code// initialize all the stick lengths$arr= array(2, 2, 4, 4, 4, 4, 6,                6, 6, 7, 7, 9, 9 );$n= sizeof($arr);echorectangleSquare($arr, $n);// This code is contributed by Sachin.?> | 
Javascript
| <script>// javascript implementation of above approach  // Function to find the possible // rectangles and squares functionrectangleSquare(arr , n){    // sort all the sticks     arr.sort();    varcount = 0;    // calculate all the pair of     // sticks with same length     for(i = 0; i < n - 1; i++)     {        if(arr[i] == arr[i + 1])        {            count++;            i++;        }    }    // divide the total number of pair     // which will be the number of possible     // rectangle and square     returncount / 2;}// Driver code // initialize all the stick lengths vararr = [2, 2, 4, 4, 4, 4, 6, 6, 6, 7, 7, 9, 9];varn = arr.length;document.write(rectangleSquare(arr, n));// This code is contributed by 29AjayKumar </script> | 
3
Complexity Analysis:
- Time Complexity: O(n*log n) where n is the size of the array.
- Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

 
                                    







