【发布时间】:2019-03-05 11:34:38
【问题描述】:
我正在尝试使用 Java Stream 解决这个问题“Two Sum”,而不是使用命令式方法:
Given nums = [2, 7, 11, 15], target = 18,
Because nums[1] + nums[2] = 7 + 11 = 18,
return [1, 2].
这是我的部分工作代码。谁能帮忙解决?我只是不知道如何将它收集起来以作为原始 int 数组返回:
class Solution {
public int[] twoSum(int[] input, int target) {
IntStream.range(0, input.length)
.forEach(i -> {
IntStream.range(0, input.length)
.filter(j -> i != j && input[i] + input[j] == target)
.peek(t -> System.out.println(input[t]))
.findFirst();
}
);
return null;
}
}
这是上面的输出(来自 peek):
11
7
【问题讨论】:
-
你循环和流的方法是不同的。解决方案需要保留一些全局变量,但流通常使用无状态方法转换数据。流可能不是完成这项任务的完美方法。
标签: java arrays loops java-stream