1. 程式人生 > >LeetCode之349. 兩個陣列的交集

LeetCode之349. 兩個陣列的交集

運用的知識:集合   。   參考:自定義集合(Set)

 

題目描述:

給定兩個陣列,編寫一個函式來計算它們的交集。

示例 1:

輸入: nums1 = [1,2,2,1], nums2 = [2,2]
輸出: [2]

示例 2:

輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
輸出: [9,4]

說明:

  • 輸出結果中的每個元素一定是唯一的。
  • 我們可以不考慮輸出結果的順序。

 

解答:



import java.util.ArrayList;
import java.util.TreeSet;

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
    	//由於題目要求輸出結果唯一,所以想到用集合
        TreeSet<Integer> set=new TreeSet<Integer>();
        //將陣列1中的元素去重後,新增到set集合
        for(int num:nums1) {
        	set.add(num);
        }
        ArrayList<Integer> list=new ArrayList<Integer>();
        //遍歷陣列2,將交集元素,放入list中
        for(int num:nums2) {
        	if(set.contains(num)) {
        		list.add(num);
        		set.remove(num);
        	}
        }
        //將list集合,變成int陣列返回
        int[] result=new int[list.size()];
        for(int i=0;i<list.size();i++) {
        	result[i]=list.get(i);
        	
        }
        return result;
 
    }
}