0%

LeetCode-350

LeetCode-350 两个数组的交集II

题目

结果

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
// 对两个数组进行排序
Arrays.sort(nums1);
Arrays.sort(nums2);


// 由于不知道交集的长度,所以用list来存储结果
List<Integer> list = new ArrayList<>();


// 双指针
int i = 0, j = 0;
int len1 = nums1.length, len2 = nums2.length;
while (i < len1 && j < len2) {
if (nums1[i] == nums2[j]) {
list.add(nums1[i]);
i++;
j++;
} else if (nums1[i] < nums2[j]) {
i++;
} else {
j++;
}
}

// 将list中的内容拷贝到数组中
int[] ans = new int[list.size()];
for (int k = 0; k < ans.length; k++) {
ans[k] = list.get(k);
}
return ans;
}
}

复杂度

时间复杂度:O(mlogm+nlogn)

空间复杂度:O(min(m,n))