Se le da una matriz de enteros. Tienes que generar el rango más grande para que todos los números en el rango estén presentes en la matriz. Los números pueden estar presentes en cualquier orden. Por ejemplo, supongamos que la matriz esEncontrar rangos contiguos en matrices
{2, 10, 3, 12, 5, 4, 11, 8, 7, 6, 15}
Aquí encontramos dos (no trivial) rangos para la que todos los números enteros en estos intervalos están presentes en la matriz, es decir, [2,8] y [10,12]. Fuera de estos [2,8] es el más largo. Entonces tenemos que dar salida a eso.
Cuando me formularon esta pregunta, se me pidió que hiciera esto en tiempo lineal y sin usar ningún tipo de clasificación. Pensé que podría haber una solución basada en hash, pero no pude encontrar nada.
Aquí está mi intento de solución:
void printRange(int arr[])
{
int n=sizeof(arr)/sizeof(int);
int size=2;
int tempans[2];
int answer[2];// the range is stored in another array
for(int i =0;i<n;i++)
{
if(arr[0]<arr[1])
{
answer[0]=arr[0];
answer[1]=arr[1];
}
if(arr[1]<arr[0])
{
answer[0]=arr[1];
answer[1]=arr[0];
}
if(arr[i] < answer[1])
size += 1;
else if(arr[i]>answer[1]) {
initialize tempans to new range;
size2=2;
}
else {
initialize tempans to new range
}
}
//I have to check when the count becomes equal to the diff of the range
estoy atascado en esta parte ... no puedo averiguar cuántas tempanswer [] se deben utilizar matrices.
..Que seguro debería ayudar – garima
La forma en que la cuestión está redactada es un poco confuso, aunque entiendo ahora. Desea encontrar el conjunto más grande de números contiguos en la matriz. En su ejemplo, '2, 3, 4, 5, 6, 7 y 8' son valores en la matriz, pero' 1 y 9' no, por lo que uno de los resultados posibles es '[2 - 8]' . –