Dada una array arr[] de enteros positivos de tamaño N , la tarea es verificar si existen dos subarreglos que no se intersecan en arr[] tales que la suma de todos los 2 posibles (subarr[i]) y la suma de todos los 2 posibles (subarr2[j]) son iguales.
Ejemplos:
Entrada: arr[] = {4, 3, 0, 1, 2, 0}
Salida: SÍ
Explicación: Al expresar cada elemento del arreglo en forma de 2 arr[i] , el arreglo se modifica a { 16, 8, 1, 2, 4, 1}.
Por tanto, dos subarreglos válidos son { 16 } y { 8, 1, 2, 4, 1 } cuya suma es igual.Entrada: arr[]={ 3, 4 }
Salida: NO
Enfoque: dado que la representación binaria de todas las potencias de 2 es única, dos de estos subarreglos solo se pueden obtener si hay algún elemento repetitivo presente en ese arreglo . De lo contrario, no es posible.
Siga los pasos a continuación para resolver el problema:
- Ordena la array dada en orden ascendente .
- Recorra la array y verifique si algún par de elementos adyacentes es igual o no.
- Si se encuentra alguno de esos pares, escriba «SÍ» . De lo contrario, escriba «NO» .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to check if two non-intersecting // subarrays with equal sum exists or not void findSubarrays(int arr[], int N) { // Sort the given array sort(arr, arr + N); int i = 0; // Traverse the array for (i = 0; i < N - 1; i++) { // Check for duplicate elements if (arr[i] == arr[i + 1]) { cout << "YES" << endl; return; } } // If no duplicate element is // present in the array cout << "NO" << endl; } // Driver Code int main() { // Given array int arr[] = { 4, 3, 0, 1, 2, 0 }; // Size of array int N = sizeof(arr) / sizeof(arr[0]); findSubarrays(arr, N); return 0; }
Java
// Java program for the above approach import java.util.*; class GFG{ // Function to check if two non-intersecting // subarrays with equal sum exists or not static void findSubarrays(int arr[], int N) { // Sort the given array Arrays.sort(arr); int i = 0; // Traverse the array for(i = 0; i < N - 1; i++) { // Check for duplicate elements if (arr[i] == arr[i + 1]) { System.out.println("YES"); return; } } // If no duplicate element is // present in the array System.out.println("NO"); } // Driver code public static void main(String[] args) { // Given array int[] arr = { 4, 3, 0, 1, 2, 0 }; // Size of array int N = arr.length; findSubarrays(arr, N); } } // This code is contributed by susmitakundugoaldanga
Python3
# Python program for the above approach # Function to check if two non-intersecting # subarrays with equal sum exists or not def findSubarrays(arr, N): # Sort the given array arr.sort(); i = 0; # Traverse the array for i in range(N - 1): # Check for duplicate elements if (arr[i] == arr[i + 1]): print("YES"); return; # If no duplicate element is # present in the array print("NO"); # Driver code if __name__ == '__main__': # Given array arr = [4, 3, 0, 1, 2, 0]; # Size of array N = len(arr); findSubarrays(arr, N); # This code is contributed by 29AjayKumar
C#
// C# program for the above approach using System; class GFG{ // Function to check if two non-intersecting // subarrays with equal sum exists or not static void findSubarrays(int[] arr, int N) { // Sort the given array Array.Sort(arr); int i = 0; // Traverse the array for(i = 0; i < N - 1; i++) { // Check for duplicate elements if (arr[i] == arr[i + 1]) { Console.WriteLine("YES"); return; } } // If no duplicate element is // present in the array Console.WriteLine("NO"); } // Driver code public static void Main() { // Given array int[] arr = { 4, 3, 0, 1, 2, 0 }; // Size of array int N = arr.Length; findSubarrays(arr, N); } } // This code is contributed by sanjoy_62
Javascript
<script> // javascript program for the above approach // Function to check if two non-intersecting // subarrays with equal sum exists or not function findSubarrays(arr , N) { // Sort the given array arr.sort(); var i = 0; // Traverse the array for (i = 0; i < N - 1; i++) { // Check for duplicate elements if (arr[i] == arr[i + 1]) { document.write("YES"); return; } } // If no duplicate element is // present in the array document.write("NO"); } // Driver code // Given array var arr = [ 4, 3, 0, 1, 2, 0 ]; // Size of array var N = arr.length; findSubarrays(arr, N); // This code is contributed by gauravrajput1 </script>
YES
Complejidad temporal: O(NLogN)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por shailjapriya y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA