
思路:

public int[] intersect(int[] nums1, int[] nums2) {
if (nums1.length > nums2.length) {
return intersect(nums2, nums1);
}
HashMap<Integer, Integer> m = new HashMap<>();
for (int n : nums1) {
m.put(n, m.getOrDefault(n, 0) + 1);
}
int k = 0;
for (int n : nums2) {
int cnt = m.getOrDefault(n, 0);
if (cnt > 0) {
nums1[k++] = n;
m.put(n, cnt - 1);
}
}
return Arrays.copyOfRange(nums1, 0, k);
}
关于 getOrDefault()方法:
如果map中含有指定的key,就返回该key对应的value,否则使用该方法的第二个参数作为默认值返回。
getOrDefault的默认值的生效条件并不是get的值为null,而是containsKey的结果为false。
本文深入解析了一种高效的交集算法实现,通过使用HashMap和getOrDefault方法优化了两个数组的交集计算过程。文章详细介绍了算法思路及核心代码,并解释了getOrDefault方法的工作原理及其在算法中的关键作用。
1108

被折叠的 条评论
为什么被折叠?



