邏輯鬼才前端大廠面試題巧解-力扣(349)兩個數組交集

題目:給定兩個數組,編寫一個函數來計算它們的交集。

解題思路

第一步:求出兩個數組的均有的元素

  1. 定義一個新數組newArr,用于存儲兩個數組的交集。

  2. 遍歷nums1數組

  3. 遍歷nums2數組

  4. 將nums1遍歷的結果與nums2遍歷的結果進行對比

  5. 若nums1中的某個元素的與nums2中的元素相同,則利用push方法將該元素存入數組newArr中

第二步:檢查存儲交集元素的數組是否存在重復元素,有的話需要去重,沒有的話則直接輸出newArr

  1. 遍歷newArr數組

  2. 依次判斷數組中元素第一次出現的位置和最后一次出現的位置是否一致

  3. 若一致,則該元素沒有重復

  4. 若不一致,則說明有重復元素,利用數組splice方法刪除重復元素,一致為止

注意:數組去重時候,可以刪除前面的元素,也可以刪除后面的元素,如刪除前面的元素,則需要循環考慮數組刪除元素導致數組長度變短帶來的影響,否則則不需要考慮

代碼如下


    function repeat(nums1, nums2) {

            var newArr = []

            for(var i = 0 ; i < nums1.length; i ++){

                for(var j = 0 ; j < nums2.length; j ++){

                    if(nums1[i] === nums2[j]){

                        newArr.push(nums1[i]);
                    }
                }
            }

            for(var k = 0; k < newArr.length; k ++){

                for(;k !== newArr.lastIndexOf(newArr[k]);){

                    newArr.splice(k,1)

                    k --;//消除數組長度變短帶來的影響
                }
            }
            return newArr;
        };

歡迎各位提出不同思路一起研究探討
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。