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