给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
代码
class Solution {public int[] intersection(int[] nums1, int[] nums2) {List<Integer> list=new ArrayList<>();Arrays.sort(nums1);//排序Arrays.sort(nums2);int p1=0,p2=0;while (p1<nums1.length&&p2<nums2.length){if(nums1[p1]<nums2[p2]){p1++;}else if(nums1[p1]>nums2[p2]){p2++; }else {list.add(nums1[p1]);//交集的元素p1++;p2++;while (p1<nums1.length&&nums1[p1]==nums1[p1-1])//跳过相同的数字p1++;while (p2<nums2.length&&nums2[p2]==nums2[p2-1])p2++; }}int[] res=new int[list.size()];for(int i=0;i<list.size();i++) res[i]=list.get(i);return res;}
}