Podstawowym rozwiązaniem będzie wyglądać następująco:Znalezienie Jeśli numer docelowy jest sumą dwóch liczb w tablicy poprzez 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;
}
Teraz jestem bardzo nowy LINQ, ale to, co napisałem tak daleko:
var result = from num in numbers
where numbers.Contains(target -num)
select num;
if (result.Count() > 0)
return true;
return false;
teraz biegnę do problemu danej poniższym przykładzie:
Array: 1, 2, 4, 5, 8
docelowa: 16
Powinien wrócić z powrotem do wartości false, ale wychwytuje 16-8 = 8. Więc jak mam to zrobić, aby nie zauważyłem siebie w sprawdzaniu zawartości? Czy mogę utworzyć drugą tablicę za każdym razem w zapytaniu, które nie zawiera numeru, nad którym pracuję (rozwiązując w ten sposób problem)?
Z góry dziękuję.
Nice :) Wydajesz się o wiele bardziej przebudzony niż jestem dziś rano +1 – leppie
Jedna rzecz: Co zrobić, jeśli tablica zawiera dwie liczby, które są równe i będą sumować się do celu? Ex: Szereg zawierał 2 8, a cel 16. Poza tym twoje stwierdzenie było niesamowite i bardzo mi pomogło. –
Tak, również zwraca dwa pasujące pary dwa razy: tj. 4 + 8 = 12; 8 + 4 = 12. Próbuję tylko znaleźć lepszą odpowiedź. – pdr