java如何确定列表中是否有2个元素提供了sum?
在面试中,我被要求按照以下合同编写方法:
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;
}
但面试官让我再实施一个解决方案
我无法创建更好的解决方案。你能吗
# 1 楼答案
也给散列一个机会。这个问题有更多的解决方案
# 2 楼答案
试试这个
# 3 楼答案
也许看看每个数字,看看总数减去这个数字是否在列表中 所以
# 4 楼答案
一个使用java-8的衬里: