分享下自己的思路:
1,首先将nums1裡面的數值以鍵值對的形式放到HashMap裡,數值以鍵放,值就是數值出現的次數
2,周遊nums2中的數,如果鍵和nums2中的數值相等,把這個數值添加到List集合中,并且HashMap中數值對應的次數就減一
3,最後将List集合中數值進行周遊放到一個數值中
public class Solution {
/**
* 需求:給定兩個數組,編寫一個函數來計算它們的交集
* 執行個體:輸入: nums1 = [1,2,2,1], nums2 = [2,2]
* 輸出:[2,2]
* 執行個體:輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
* 輸出:[4,9]
*/
public static void main(String[] args) {
int [] nums1 = {4,9,5};
int [] nums2= {9,4,9,8,4};
System.out.println(Arrays.toString(intersect(nums1,nums2)));
}
public static int[] intersect(int[] nums1, int[] nums2) {
//1,首先将nums1裡面的數值以鍵值對的形式放到HashMap裡,數值以鍵放,值就是數值出現的次數
List<Integer> lists=new ArrayList<Integer>();
HashMap<Integer,Integer> map =new HashMap<Integer,Integer>();
for(int num:nums1) {
if(map.containsKey(num)) {
map.put(num,map.get(num)+1);
}
else {
map.put(num,1);
}
}
//2,周遊nums2中的數,如果鍵和nums2中的數值相等,把這個數值添加到List集合中,并且HashMap中數值對應的次數就減一
for(int num:nums2) {
if(map.containsKey(num)&&map.get(num)!=0) {
lists.add(num);
map.put(num,map.get(num)-1);
}
}
int [] result =new int [lists.size()];
for(int i=0;i<lists.size();i++) {
result[i]=lists.get(i);
}
return result;
}
}