leetcode 349. 兩個陣列的交集

Gogo-2020發表於2020-11-02

給定兩個陣列,編寫一個函式來計算它們的交集。
示例 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;
        }
}

相關文章