LeetCode Javascript实现 169. Majority Element 217. Contains Duplicate(两个对象比较是否相等时,如果都指向同一个对象,a==b才是true)350. Intersection of Two Arrays II

 

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){
        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!


 

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%的人。

你可能感兴趣的:(LeetCode Javascript实现 169. Majority Element 217. Contains Duplicate(两个对象比较是否相等时,如果都指向同一个对象,a==b才是true)350. Intersection of Two Arrays II)