leetcode26
去掉整形數(shù)組中重復(fù)的值,給出[1,1,2]返回[1,2]的數(shù)組長度
思路:主要考察對(duì)object的使用,object的key值是唯一的。
var removeDuplicates = function(nums) {
var hashTable={};
var res=[];
for(var i=0;i<nums.length;i++){
if(!hashTable[nums[i]]){
hashTable[nums[i]]=true;
res.push(nums[i]);
}
}
return res.length;
};
但是若只能在nums上做改變則不能使用上述這種方法。設(shè)置一個(gè)id,來記錄符合要求的數(shù)值。
function(nums){
var id=1;
for(var i=1;i<nums.length;i++){
if(nums[i] != nums[i-1]){
nums[id++]=nums[i]
}
}
return id;
}
leetcode27
去掉定一個(gè)數(shù)組和一個(gè)值,刪除該值的所有實(shí)例,并返回新的長度
思路是同上的,但是一開始享用splice刪除,發(fā)現(xiàn)刪除后改變了數(shù)組的長度,這樣下一次循環(huán)就遍歷不到往前移的數(shù)了。
var removeElement = function(nums, val) {
var id=0;
for(var i=0;i<nums.length;i++){
if(nums[i]!=val){
//nums.splice(i,1);
nums[id++]=nums[i];
}
}
return id;
};