leetcode刷题总结「JavaScript」(3.27已更新

JS每日一题

#数组

#两数之和

题目传送门:两数之和 (opens new window)

题意:在数组中挑两个数,使得target等于两数之和,输出两数的坐标。

方法一:
暴力枚举:

点击查看代码

var twoSum = function(nums, target) {
    for(var i=0;i<nums.length;i++){
        for(var j=i+1;j<nums.length;j++){
            if(nums[i]+nums[j]===target){
                return [i,j];
            }
        }
    }
    return [];
};

方法二:
开一个盒子
将每一个无法与盒子里的数匹配相加得到target的数放到盒子里面;
如果能够匹配,那就直接返回答案就行。

点击查看代码

var twoSum = function(nums, target) {
    let box = {};
    for(let i = 0;i < nums.length; i++)
    {
        if( box[ target - nums[i] ] >= 0){
             return [box[target-nums[i]],i];
        }
        else {
            box[nums[i]] = i;
        }
    }
};

方法三:
用Map来进行维护,思路同方法二

点击查看代码

var twoSum = function(nums, target) {
    let myMap = new Map();
    for(let i=0;i<nums.length;i++)
    {
        if(myMap.get(target-nums[i])>=0){
            return [i,myMap.get(target-nums[i])];
        }else{
            myMap.set(nums[i],i);
        }
    }
};

#删除有序数组中的重复项

题目传送门:删除有序数组中的重复项
方法一:
运用splice方法,splice(i,j)表示从第i个位置开始,消去j个元素

点击查看代码

var removeDuplicates = function(nums) {
    for(var i=0;i<nums.length;i++)
    {
        if(nums[i]===nums[i+1]){
            nums.splice(i,1);
            i--;
        }
    }
    console.log(nums.length);
    console.log(nums);
};

方法二:
用双指针来写,fa往后面遍历,ch则表示找到几个不同的。

点击查看代码

// 104ms 46.8MB
var removeDuplicates = function(nums) {
    // 第二种方法是使用双指针来写的
    for(var fa = 0,ch=0;fa<nums.length;fa++){
        if(nums[fa]!==nums[ch]){
            ch++;
            nums[ch] = nums[fa];
        }
    }
    nums.splice(ch+1,nums.length-ch);
    console.log(ch);
    console.log(nums);
};

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值