Check if the array has an element which is equal to product of remaining elements
Given an array of N elements, the task is to check if the array has an element which is equal to the product of all the remaining elements.
Examples:
Input: arr[] = {1, 2, 12, 3, 2} Output: YES 12 is the product of all the remaining elements i.e. 1 * 2 * 3 * 2 = 12 Input: arr[] = {1, 2, 3} Output: NO
Method-1:
- First, take the product of all the element of the array.
- Now traverse the whole array again.
- For any element a[i] check if it is equal to the product of all elements divided by that element.
- Print Yes if at least one such element is found.
Below is the implementation of the above approach:
C++
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std; // Function to Check if the array // has an element which is equal to // product of all the remaining elements bool CheckArray( int arr[], int n) { int prod = 1; // Calculate the product of all the elements for ( int i = 0; i < n; ++i) prod *= arr[i]; // Return true if any such element is found for ( int i = 0; i < n; ++i) if (arr[i] == prod / arr[i]) return true ; // If no element is found return false ; } int main() { int arr[] = { 1, 2, 12, 3, 2 }; int n = sizeof (arr) / sizeof (arr[0]); if (CheckArray(arr, n)) cout << "YES" ; else cout << "NO" ; return 0; } |
Java
// Java implementation of the above approach import java.io.*; class GFG { // Function to Check if the array // has an element which is equal to // product of all the remaining elements static boolean CheckArray( int arr[], int n) { int prod = 1 ; // Calculate the product of all the elements for ( int i = 0 ; i < n; ++i) prod *= arr[i]; // Return true if any such element is found for ( int i = 0 ; i < n; ++i) if (arr[i] == prod / arr[i]) return true ; // If no element is found return false ; } public static void main (String[] args) { int arr[] = { 1 , 2 , 12 , 3 , 2 }; int n =arr.length; if (CheckArray(arr, n)) System.out.println( "YES" ); else System.out.println( "NO" ); } } // This code is contributed by shs.. |
Python3
# Python 3 implementation of the above approach # Function to Check if the array # has an element which is equal to # product of all the remaining elements def CheckArray(arr, n): prod = 1 # Calculate the product of all # the elements for i in range ( 0 , n, 1 ): prod * = arr[i] # Return true if any such element # is found for i in range ( 0 , n, 1 ): if (arr[i] = = prod / arr[i]): return True # If no element is found return False # Driver code if __name__ = = '__main__' : arr = [ 1 , 2 , 12 , 3 , 2 ] n = len (arr) if (CheckArray(arr, n)): print ( "YES" ) else : print ( "NO" ) # This code is contributed by # Surendra_Gangwar |
C#
// C# implementation of the above approach class GFG { // Function to Check if the array // has an element which is equal to // product of all the remaining elements static bool CheckArray( int [] arr, int n) { int prod = 1; // Calculate the product of // all the elements for ( int i = 0; i < n; ++i) prod *= arr[i]; // Return true if any such // element is found for ( int i = 0; i < n; ++i) if (arr[i] == prod / arr[i]) return true ; // If no element is found return false ; } // Driver Code public static void Main () { int [] arr = new int [] { 1, 2, 12, 3, 2 }; int n = arr.Length; if (CheckArray(arr, n)) System.Console.WriteLine( "YES" ); else System.Console.WriteLine( "NO" ); } } // This code is contributed by mits |
PHP
<?php // PHP implementation of the above approach // Function to Check if the array // has an element which is equal to // product of all the remaining elements function CheckArray( $arr , $n ) { $prod = 1; // Calculate the product of // all the elements for ( $i = 0; $i < $n ; ++ $i ) $prod *= $arr [ $i ]; // Return true if any such element // is found for ( $i = 0; $i < $n ; ++ $i ) if ( $arr [ $i ] == $prod / $arr [ $i ]) return true; // If no element is found return false; } // Driver Code $arr = array (1, 2, 12, 3, 2); $n = sizeof( $arr ); if (CheckArray( $arr , $n )) echo "YES" ; else echo "NO" ; // This code is contributed // by Akanksha Rai |
Javascript
<script> // Java script implementation of the above approach // Function to Check if the array // has an element which is equal to // product of all the remaining elements function CheckArray(arr,n) { let prod = 1; // Calculate the product of all the elements for (let i = 0; i < n; ++i) prod *= arr[i]; // Return true if any such element is found for (let i = 0; i < n; ++i) if (arr[i] == prod / arr[i]) return true ; // If no element is found return false ; } let arr = [ 1, 2, 12, 3, 2 ]; let n =arr.length; if (CheckArray(arr, n)) document.write( "YES" ); else document.write( "NO" ); // This code is contributed by sravan kumar Gottumukkala </script> |
YES
Time Complexity: O(n)
Auxiliary Space: O(1)
Method-2: The approach is to find the product of all the elements of the array and check if it is a perfect square or not. If it is a perfect square then check if the square root of the product exists in the array or not. If exists then print Yes else print No.
According to the problem statement, a * b = N
where b is the product of all the remaining elements of the array except a i.e arr[i]
And it is also mentioned that find the index such that a = b.
So, it simply means that a*a = N i.e. N is a perfect square. and a is its square root.
Below is the implementation of the above approach:
C++
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std; // Function to Check if the array // has an element which is equal to // product of all the remaining elements bool CheckArray( int arr[], int n) { int prod = 1; // Storing frequency in map unordered_set< int > freq; // Calculate the product of all the elements for ( int i = 0; i < n; ++i) { freq.insert(arr[i]); prod *= arr[i]; } int root = sqrt (prod); // If the prod is a perfect square if (root * root == prod) // then check if its square root // exist in the array or not if (freq.find(root) != freq.end()) return true ; return false ; } // Driver code int main() { int arr[] = { 1, 2, 12, 3, 2 }; int n = sizeof (arr) / sizeof (arr[0]); if (CheckArray(arr, n)) cout << "YES" ; else cout << "NO" ; return 0; } |
Java
import java.util.ArrayList; // Java implementation of the above approach class GFG { // Function to Check if the array // has an element which is equal to // product of all the remaining elements static boolean CheckArray( int arr[], int n) { int prod = 1 ; // Storing frequency in map ArrayList<Integer> freq = new ArrayList<>(); // Calculate the product of all the elements for ( int i = 0 ; i < n; ++i) { freq.add(arr[i]); prod *= arr[i]; } int root = ( int ) Math.sqrt(prod); // If the prod is a perfect square if (root * root == prod) // then check if its square root // exist in the array or not { if (freq.contains(root) & freq.lastIndexOf(root) != (freq.size())) { return true ; } } return false ; } // Driver code public static void main(String[] args) { int arr[] = { 1 , 2 , 12 , 3 , 2 }; int n = arr.length; if (CheckArray(arr, n)) { System.out.println( "YES" ); } else { System.out.println( "NO" ); } } } //This code is contributed by 29AjayKumar |
Python3
# Python3 implementation of the above approach import math # Function to Check if the array # has an element which is equal to # product of all the remaining elements def CheckArray( arr, n): prod = 1 # Storing frequency in map freq = [] # Calculate the product of all the elements for i in range (n) : freq.append(arr[i]) prod * = arr[i] root = math.sqrt(prod) # If the prod is a perfect square if (root * root = = prod): # then check if its square root # exist in the array or not if root in freq: return True return False # Driver code if __name__ = = "__main__" : arr = [ 1 , 2 , 12 , 3 , 2 ] n = len (arr) if (CheckArray(arr, n)): print ( "YES" ) else : print ( "NO" ) |
C#
// C# implementation of above approach using System; using System.Collections; class GFG { // Function to Check if the array // has an element which is equal to // product of all the remaining elements static bool CheckArray( int []arr, int n) { int prod = 1; // Storing frequency in map ArrayList freq = new ArrayList(); // Calculate the product of all the elements for ( int i = 0; i < n; ++i) { freq.Add(arr[i]); prod *= arr[i]; } int root = ( int ) Math.Sqrt(prod); // If the prod is a perfect square if (root * root == prod) // then check if its square root // exist in the array or not { if (freq.Contains(root) & freq.LastIndexOf(root) != (freq.Count)) { return true ; } } return false ; } // Driver code public static void Main() { int []arr = {1, 2, 12, 3, 2}; int n = arr.Length; if (CheckArray(arr, n)) { Console.WriteLine( "YES" ); } else { Console.WriteLine( "NO" ); } } } /* This code contributed by PrinciRaj1992 */ |
PHP
<?php // PHP implementation of the above approach // Function to Check if the array // has an element which is equal to // product of all the remaining elements function CheckArray( $arr , $n ) { $prod = 1; // Storing frequency in map $freq = array (); // Calculate the product of all the elements for ( $i = 0; $i < $n ; ++ $i ) { array_push ( $freq , $arr [ $i ]); $prod *= $arr [ $i ]; } $freq = array_unique ( $freq ); $root = (int)(sqrt( $prod )); // If the prod is a perfect square if ( $root * $root == $prod ) // then check if its square root // exist in the array or not if (in_array( $root , $freq )) return true; return false; } // Driver code $arr = array ( 1, 2, 12, 3, 2 ); $n = count ( $arr ); if (CheckArray( $arr , $n )) echo "YES" ; else echo "NO" ; // This code is contributed by mits ?> |
Javascript
<script> // JavaScript implementation of // the above approach // Function to Check if the array // has an element which is equal to // product of all the remaining elements function CheckArray(arr,n) { let prod = 1; // Storing frequency in map let freq = []; // Calculate the product of all the elements for (let i = 0; i < n; ++i) { freq.push(arr[i]); prod *= arr[i]; } let root = Math.floor(Math.sqrt(prod)); // If the prod is a perfect square // then check if its square root if (root * root == prod) // exist in the array or not { if (freq.includes(root) & freq.lastIndexOf(root) != (freq.length)) { return true ; } } return false ; } // Driver code let arr=[1, 2, 12, 3, 2]; let n = arr.length; if (CheckArray(arr, n)) { document.write( "YES" ); } else { document.write( "NO" ); } // This code is contributed by avanitrachhadiya2155 </script> |
YES
Time Complexity: O(n)
Auxiliary Space: O(n)