去掉整形数组重复的值

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;
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容