給定兩個陣列,編寫乙個函式來計算它們的交集。
輸入: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
,以及兩個指標i
、k
與兩個陣列的長度n1
、n2
,定義迴圈,在兩個指標分別小於其指向的目標陣列的長度下執行迴圈,如果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...