Una solución básica se vería así:si un número de destino es la suma de dos números en una matriz a través de LINQ
bool sortTest(int[] numbers, int target)
{
Array.Sort(numbers);
for(int i = 0; i < numbers.Length; i++)
{
for(int j = numbers.Length-1; j > i; j--)
{
if(numbers[i] + numbers[j] == target)
return true;
}
}
return false;
}
Ahora estoy muy nuevo en LINQ pero esto es lo que he escrito hasta ahora:
var result = from num in numbers
where numbers.Contains(target -num)
select num;
if (result.Count() > 0)
return true;
return false;
Ahora estoy corriendo en un problema dado el ejemplo siguiente:
matriz: 1, 2, 4, 5, 8
Target: 16
Debería volver falso, pero está atrapando 16-8 = 8. Entonces, ¿cómo hago para no dejar que se note en el cheque contiene? ¿O puedo hacer una segunda matriz cada vez dentro de la consulta que no contenga el número con el que estoy trabajando (resolviendo así el problema)?
Gracias de antemano.
Bonito :) Pareces mucho más despierto que yo esta mañana +1 – leppie
Una cosa: ¿Qué pasa si la matriz contiene dos números que son iguales y se sumarían al objetivo? Ej: La matriz contenía 2 8 y el objetivo era 16. Aparte de eso, tu declaración fue increíble y me ayudó mucho. –
Sí, también devuelve cualquier par coincidente dos veces: es decir. 4 + 8 = 12; 8 + 4 = 12. Solo estoy tratando de encontrar una respuesta aún mejor. – pdr