【力扣】两个数组的交集 II
2021-04-18 04:28
标签:次数 res 顺序 方法 put color temp problem 解答 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 说明: 输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。 来源:力扣(LeetCode) 这个问题真是搞不懂我了,我以为是连续的,没想到随便都可以,以后要注意读题啊。 解题方法1:使用hashMap的方式 解答二: 【力扣】两个数组的交集 II 标签:次数 res 顺序 方法 put color temp problem 解答 原文地址:https://www.cnblogs.com/fengtingxin/p/13296538.html
输出:[2,2]
示例 2:
输出:[4,9]
我们可以不考虑输出结果的顺序。
链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-iipublic int[] intersect(int[] nums1, int[] nums2) {
if (nums1.length nums2.length){
return intersect(nums2,nums1);
}
Map
public int[] intersect(int[] nums1, int[] nums2) {
//直接排序,升序
Arrays.sort(nums1);
Arrays.sort(nums2);
int index1 = 0 , index2 = 0 , index = 0;
int indexLength1 = nums1.length , indexLength2 = nums2.length;
int result[] = new int[indexLength1 > indexLength2 ? indexLength2 : indexLength1];
//通过循环的方式,把result处理了
while(index1 indexLength2){
if (nums1[index1] nums2[index2]){
index1++;
} else if (nums1[index1] > nums2[index2]){
index2++;
}else {
result[index] = nums1[index1];
index++;
index1++;
index2++;
}
}
//注意这里包括下标from,不包括上标to
return Arrays.copyOfRange(result,0,index);
}