兩個數組的交集 II [JS]



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

示例 1:

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

示例 2:

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

說明:

  • 輸出結果中每個元素出現的次數,應與元素在兩個數組中出現的次數一致。
  • 我們可以不考慮輸出結果的順序。

進階:

  • 如果給定的數組已經排好序呢?你將如何優化你的算法?
  • 如果 nums1 的大小比 nums2 小很多,哪種方法更優?
  • 如果 nums2 的元素存儲在磁盤上,磁盤內存是有限的,並且你不能一次加載所有的元素到內存中,你該怎么辦?


    語言:JavaScript
     1 /**
     2  * @param {number[]} nums1
     3  * @param {number[]} nums2
     4  * @return {number[]}
     5  */
     6 var intersect = function(nums1, nums2) {
     7 
     8     let i = j = 0,
     9         len1 = nums1.length,
    10         len2 = nums2.length,
    11         newArr = [];
    12     
    13     if( len1 === 0 || len2 === 0 ){
    14         return newArr;
    15     }
    16     
    17     nums1.sort(function(a,b){
    18         return a - b;
    19     });
    20     nums2.sort(function(a,b){
    21         return a - b;
    22     });
    23     
    24     while( i < len1 || j < len2 ){
    25         if( nums1[i] > nums2[j] ){
    26             j ++;
    27         }else if( nums1[i] < nums2[j] ){
    28             i ++;
    29         }else{
    30             
    31             if(nums1[i] === nums2[j]){
    32                 newArr.push( nums1[i] );
    33             }
    34 
    35             if( i < len1 - 1 ){
    36                 i ++;
    37             }else{
    38                 break;
    39             }
    40 
    41             if( j < len2 - 1 ){
    42                 j ++;
    43             }else{
    44                 break;
    45             }
    46         }        
    47     } 
    49     return newArr;
    50 };

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM