題目描述:給定兩個陣列,編寫乙個函式來計算它們的交集。
示例一:
輸入:nums1 = [1,2,2,1], nums2 = [2,2]輸出:[2,2]例項二:
輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]輸出:[4,9]
// 由於同乙個數字在兩個陣列中都可能出現多次,因此需要用雜湊表儲存每個數字出現的次數。對於乙個數字,其在交集**現的次數等於該數字在兩個陣列**現次數的最小值。
//首先遍歷第乙個陣列,並在雜湊表中記錄第乙個陣列中的每個數字以及對應出現的次數,然後遍歷第二個陣列,對於第二個陣列中的每個數字,如果在雜湊表中存在這個數字,則將該數字新增到答案,並減少雜湊表中該數字出現的次數。
//為了降低空間複雜度,首先遍歷較短的陣列並在雜湊表中記錄每個數字以及對應出現的次數,然後遍歷較長的陣列得到交集。
/**核心是雜湊表取交集
*/class solution
if(nums1.length > nums2.length) return intersect(nums2,nums1);
mapmap = new hashmap();
//遍歷陣列長度較短的陣列,遍歷完成以後map裡面儲存num出現的次數
for(int num : nums1)
int intersection = new int[nums1.length];
int index = 0;
for (int num : nums2) else }}
] intersection,int from,int to)
//將乙個原始的陣列intersection,從下標from開始複製,複製到上標to,生成乙個新的陣列。
//注意這裡包括下標from,不包括上標to。
return arrays.copyofrange(intersection, 0, index);
}}
兩個陣列的交集
給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2,2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 4,9 說明 輸出結果中每個元素出現的次數,應與元素在兩個陣列 現的次數一致。我們可以不考慮輸出結果...
兩個陣列的交集
題目 給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 9,4 說明 首先說一下我自己的 菜雞 思路 我先是想先去重第第乙個陣列 nums1 然後迴圈判斷...
兩個陣列的交集
給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 9,4 說明 輸出結果中的每個元素一定是唯一的。我們可以不考慮輸出結果的順序。排序 雙指標 set cl...