We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
一些提示:
如果哈希值比较少、特别分散、跨度非常大,使用数组就造成空间的极大浪费!
这道题目没有限制数值的大小,就无法使用数组来做哈希表了
直接使用set 不仅占用空间比数组大,而且速度要比数组慢,set把数值映射到key上都要做hash计算的
思路分析:简单的说就是,将一个数组转化成set集合,再将另外一个数组转化成set集合前判断是否在第一个集合出现过,出现过的再放到另外一个set结果集中。
class Solution { public int[] intersection(int[] nums1, int[] nums2) { //判断临界条件 if (nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0) { return new int[0]; } //先将数组nums1存入set集合中,它当然也会去重,set集合中不会出现重复的元素 Set<Integer> set1 = new HashSet<>(); //存放结果 Set<Integer> resSet = new HashSet<>(); //遍历数组nums1 for (int i : nums1) { set1.add(i); } //遍历数组nums2 for (int i : nums2) { //判断nums1里面有没有 if (set1.contains(i)) { resSet.add(i); } } //将集合转化为数组 return resSet.stream().mapToInt(x -> x).toArray(); /*这个代码使用了Java 8中的流(Stream) API,它提供了一种高效的方式来处理数据。 具体来说,这句话的各个部分的作用如下: resSet.stream():对 resSet 集合进行流操作,返回一个 Stream<Integer> 类型的流。 .mapToInt(x -> x):对流中的每个元素执行 map 操作,将元素映射成一个 int 类型的值。x -> x 表示的是一个Lambda表达式,它的作用是将元素原封不动地映射成 int 类型。 .toArray():将流中的所有 int 值存储在一个 int 数组中,然后将该数组作为结果返回。*/
The text was updated successfully, but these errors were encountered:
No branches or pull requests
哈希法—set集合实现
2.1 349. 两个数组的交集
一些提示:
如果哈希值比较少、特别分散、跨度非常大,使用数组就造成空间的极大浪费!
这道题目没有限制数值的大小,就无法使用数组来做哈希表了
直接使用set 不仅占用空间比数组大,而且速度要比数组慢,set把数值映射到key上都要做hash计算的
The text was updated successfully, but these errors were encountered: