C++ 8 ms beats 86% in place solution


  • 0
    P
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) 
    {
        vector<int> result;
        result.reserve(min(nums1.size(), nums2.size()));
        sort(nums1.begin(), nums1.end());
        sort(nums2.begin(), nums2.end());
        
        int i1 = 0, i2 = 0, len1 = nums1.size(), len2 = nums2.size();
        while(i1 < len1 && i2 < len2)
        {
            if(nums1[i1] == nums2[i2])
            {
                result.push_back(nums1[i1]);
                ++i1; ++i2;
            }
            else if(nums1[i1] < nums2[i2])
                ++i1;
            else
                ++i2;
        }
        
        return result;
    }

  • 0
    D
    /**
     * @param {number[]} nums1
     * @param {number[]} nums2
     * @return {number[]}
     */
    var intersect = function(nums1, nums2) {
        var d, d1, d2, key, num, result;
        d1={}, d2={}, result=[];
        
    
        for (var i=0; i<nums1.length; i++) {
            key = nums1[i];
            d1[key] = !(d1[key]) ? 1 : d1[key]+1;
        }
    
        for (var j=0; j<nums2.length; j++) {
            key = nums2[j];
            d2[key] = !(d2[key]) ? 1 : d2[key]+1;
        }
    
        d = Object.keys(d1).length < Object.keys(d2) ? d1 : d2;
        for (var k in d) {
            if (k in d1 && k in d2) {
                num = Math.min(d1[k], d2[k]);
                for (var p=0; p<num; p++) {
                    result.push(parseInt(k));
                }
            }
        }
        
        return result;
    };

Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.