【20201102 每日一题】刷题使我快乐。200+题解已收录至我的GitHub,欢迎关注。
349. 两个数组的交集
难度简单261
给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 说明:
输出结果中的每个元素一定是唯一的。
我们可以不考虑输出结果的顺序。
这道题有非常多的写法,可以在List,Set之间来回折腾,总能写对的。
下面列举一个用stream()做的办法。速度不快,但我想顺便总结一下stream()的用法。
class
stream()的用法总结
代码 | 解释 |
---|---|
stream() | 转化为流 |
toArray() | 转化为Arrays(泛型不变) |
boxed() | 自动装箱 |
collect(Collectors.toList()) | 转化为List |
filter() | 通过调用的Lambda函数留下符合要求的元素 filter(n -> set.contains(n)) --留下set中含有的元素 |
distinct() | 去重 |
sum() | 求和 例如 Arrays.stream(nums).sum(); |
max() | 求最大值 |
min() | 求最小值 |
getAsInt() | 把结果转化为整型变量 |
一些例子
内容 | 代码 |
---|---|
Set<Integer> -> int[] | set.stream().mapToInt(i->i).toArray(); |
List <Integer>-> Arrays int[] | list.stream().mapToInt(Integer::valueOf).toArray(); |
int[] -> List<Integer> | Arrays.stream(nums).boxed().collect(Collectors.toList()); |
int[] -> Integer[] | Arrays.stream(nums).boxed().toArray(Integer[]::new); |
欢迎点赞、评论、分享本文并且关注我的GitHub,已收录200+题解。
你所有的互动都是我坚持写下去的动力,谢谢。
以上。