leetcode26
去掉整形数组中重复的值,给出[1,1,2]返回[1,2]的数组长度
思路:主要考察对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上做改变则不能使用上述这种方法。设置一个id,来记录符合要求的数值。
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
去掉定一个数组和一个值,删除该值的所有实例,并返回新的长度
思路是同上的,但是一开始享用splice删除,发现删除后改变了数组的长度,这样下一次循环就遍历不到往前移的数了。
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;
};