兩個陣列的交集

2022-01-10 08:55:07 字數 1126 閱讀 6361

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

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

輸出:[2]

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

輸出:[9,4]

/**

* @param nums1

* @param nums2

* @return

*/var intersection = function(nums1, nums2) else

}return target;

};

比較常規的題目,計算兩個陣列的交集最簡單的方式就是遍歷陣列nums1,對於其中的每個元素,遍歷陣列nums2判斷該元素是否在陣列nums2中,如果存在,則將該元素新增到返回值,這樣的方式時間複雜度是o(mn),在這裡使用排序加雙指標的方式,首先對於兩個陣列分別進行排序,之後分別對於兩個陣列設立指標進行遍歷,對比兩個指標所指向的元素,較小的值的指標後移,如果相等則判斷是否已經在目標陣列中,不在則將其推入陣列,之後同時將兩個指標後移,最終返回目標陣列即可。首先將兩個陣列分別從小到大進行排序,之後定義目標陣列target,以及兩個指標ik與兩個陣列的長度n1n2,定義迴圈,在兩個指標分別小於其指向的目標陣列的長度下執行迴圈,如果i指標指向的值小於k指標指向的值,將i指標後移,如果大於則將k指標後移,如果相等則首先得到目標陣列的最後乙個值的索引,當然在陣列為空的情況下會得到-1,在js中會取得undefined值,在下方比較時不會相等,之後比較最後乙個值是否與此時指標指向的值相等,不相等則將值推入陣列,這樣用來進行去重操作,之後將兩個指標分別後移,迴圈結束後返回目標陣列即可。

兩個陣列的交集

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