Problema: Dada una matriz de entrada de enteros de tamaño ny una matriz de consulta de enteros de tamaño k, encuentre la ventana más pequeña de la matriz de entrada que contenga todo los elementos de la matriz de consulta y también en el mismo orden.Encuentra la ventana más pequeña de la matriz de entrada que contiene todos los elementos de la matriz de consulta
He intentado a continuación.
int[] inputArray = new int[] { 2, 5, 2, 8, 0, 1, 4, 7 };
int[] queryArray = new int[] { 2, 1, 7 };
Encontrará la posición de todos los elementos del conjunto de consultas en inputArray.
public static void SmallestWindow(int[] inputArray, int[] queryArray)
{
Dictionary<int, HashSet<int>> dict = new Dictionary<int, HashSet<int>>();
int index = 0;
foreach (int i in queryArray)
{
HashSet<int> hash = new HashSet<int>();
foreach (int j in inputArray)
{
index++;
if (i == j)
hash.Add(index);
}
dict.Add(i, hash);
index = 0;
}
// Need to perform action in above dictionary.??
}
Me siguiente diccionario
- int 2 -> Posición {1, 3}
- int 1 -> Posición {6}
- int 7 -> Posición { 8}
Ahora quiero llevar a cabo después de la etapa findout ventana mínima
Comparar la posición int 2 con la posición int 1. Como (6-3) < (6-1) .. Así que voy a almacenar 3, 6 en un hashmap.
Comparará la posición de int 1 e int 7 igual que arriba.
No puedo entender cómo voy a comparar dos valores consecutivos de un diccionario. Por favor ayuda.
If 'queryArray' es' {2, 8, 0} '¿cuál es el resultado esperado? Índices '[0-4]' o Índices '[2-4]'? – Ani
@Ani - Creo que debería ser '[2-4]', que es el más corto. –
sí, debería ser [2-4] ya que esta es la ventana más pequeña –