На собеседовании меня попросили написать метод со следующим контрактом:
boolean checkList(List<Long> list, long sum){...}
, например, он должен вернуть true для аргументов:
({1,2,3,4,5,6}
, 9
) потому что 4 + 5 = 9
и он должен возвращать false для аргументов:
({0,10,30}
, 11
), потому что нет комбинации 2 элементовс суммой 11
Я предложил такой код:
boolean checkList(List<Long> list, long expectedSum) {
if (list.size() < 2) {
return false;
}
for (int i = 0; i < list.size() - 1; i++) {
for (int k = i; k < list.size(); k++) {
if ((list.get(i) + list.get(k)) == expectedSum) {
return true;
}
}
}
return false;
}
Но интервьюер попросил меня реализовать еще одно решение.
Я не могу создать лучшее решение.Вы можете?