LeetCode Javascript實現 169. Majority Element 217. Contains Duplicate(兩個對象比較是否相等時,若是都指向同一個對象,a==b纔是tru

 

169. Majority Element

/**
 * @param {number[]} nums
 * @return {number}
 */
    var majorityElement = function(nums) {
    var hash = {};
    var y=-1,z;
    //注意這裏的方括號,利用變量訪問對象屬性時要用方括號
    for(var i=0;i<=nums.length-1;i++){
        if(hash[nums[i]]){
            hash[nums[i]]++;
        }else{
            hash[nums[i]]=1;
        }
    }
    for(var x in hash){
        if(y<hash[x]){
            y=hash[x]
            z=x;
        }
    }
    return Number(z);
};

利用了從上一題那裏學到的哈希表。數組


217. Contains Duplicate

/**
 * @param {number[]} nums
 * @return {boolean}
 */
var containsDuplicate = function(nums) {
 //   if(nums==[]){
 //       return false;
 //   }
    var vain = [];
    for(var i=0;i<nums.length;i++){
        if(vain.indexOf(nums[i])==-1){
            vain.push(nums[i]);
        }
    }
    if(vain.join("")==nums.join("")){
    return false;
    }
    return true;
};

睡前再刷一題,這題我用了數組去重。。反正效率很低,大約超過4%的人。。可是這種狀況下依舊要注意當數組a和數組b做比較時,即便a=[1],b=[1],a==b的布爾運算結果倒是false!spa


 

350. Intersection of Two Arrays II

/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
    var intersect = function(nums1, nums2) {
        var small = nums1.length<=nums2.length?nums1:nums2;
        var big =  nums1.length<=nums2.length?nums2:nums1;
        var newarr = [];
        var i, dict = {};
        for(i = 0; i < big.length; i++){
         if(!dict[big[i]]){
             dict[big[i]] = 1;
         }else{
             dict[big[i]]++;
         }
         }

        for(i = 0; i < small.length; i++){
         if(!dict[small[i]] || dict[small[i]] === 0){
             
         }else{
             dict[small[i]]--;
             newarr.push(small[i]);
         }
    }


     return newarr;
    };

這題又用到哈希表,效率很高,大約超過96%的人。code

相關文章
相關標籤/搜索