美文网首页
leetcode-javascript-1. 两数之和

leetcode-javascript-1. 两数之和

作者: 一书文集 | 来源:发表于2019-10-04 20:08 被阅读0次

https://leetcode-cn.com/problems/two-sum/

for loop常用解法

从第一个开始与后面相加, 直到等于target

    var twoSum = function(nums, target) {
        //map, for, forEach, for in, sor
        var re = [];
        for(var i in nums.length) {
            nums[i] < target ? re += nums[i] : index++
            for(var j =1; j< nums.length; j++)
                console.log(i)
                if((nums[j] + nums[i]) == target) 
                          return [i, j]
                else
                           return 
        }
        // return re
    };
//牛逼的 j = i+1
for (let i = 0; i < nums.length; i++) { 
for (let j = i + 1; j < nums.length; j++) {
 if (nums[i] + nums[j] === target) { return [i, j] } } }

arr.indexOf(searchElement[, fromIndex = 0])

    /**
     * @param {number[]} nums
     * @param {number} target
     * @return {number[]}
     */
var twoSum = function(nums, target) {
//for需要{}, if不可以不用
//for不用{}会出现意向不到的情况
    for(let i in nums){
        let j=nums.indexOf(target-nums[i],i+1) //i = 0, 是否有9 - nums【0】, 从第0后面开始
        if(j>i)
            console.log(i, j)
            return [i,j]
        
    }


}

哈希表
jsmap的使用

var twoSum = function(nums, target) {
  const map = new Map() 
  for (let i = 0; i < nums.length; i ++) {
     //get将值放入otherIndex, 创建一个map, i递增,
    const otherIndex = map.get(target - nums[i]) 
    //undefined也要注意
    if (otherIndex !== undefined) return [otherIndex, i]
     //值在前面 下标在后面
    map.set(nums[i], i)
  }

};

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



牛逼的indexOf

var twoSum = function(nums, target) {
    for(let i = 0,len = nums.length;i<len;i++){
        let index = nums.indexOf(target - nums[i]); //index = x
        if(i!=index&&index != -1){ //index没有返回-1,只要存在就可以返回了
            return [i ,index];
        }
    }
};


总结

leetcode的题目很明显都是套路,几乎都是差不多的解法
从暴力解法,到比较巧的使用indexOf, 哈希表等算法之上的东西,
思路可以围绕着这些暴力解法,和方法直接展开,不过要考虑好边界条件

边界条件非常模糊在脑子里,例如indexOf返回的下表怎么处理?
有下表怎么确立返回条件,需要逻辑十分清晰,
i++, j = target - nums[i]的下标
只要j不等i 就可以返回[i, j]

相关文章

  • leetcode-javascript-1. 两数之和

    https://leetcode-cn.com/problems/two-sum/ for loop常用解法 从第...

  • 两数之和(golang)

    原题:两数之和 关联:两数之和 II - 输入有序数组(golang)两数之和 IV - 输入 BST(golang)

  • 两数之和 II - 输入有序数组(golang)

    原题:两数之和 II - 输入有序数组 关联:两数之和(golang)两数之和 IV - 输入 BST(golan...

  • 浅入浅出实现一个异步求和函数

    简化:两数之和 我们先来简单的实现一个异步两数之和函数 加深:多数之和 上面我们实现了两数之和,然后扩展到多数之和...

  • 两数之和,三数之和

    转载:https://www.cnblogs.com/DarrenChan/p/8871495.html 1. 两...

  • 两数之和&三数之和&四数之和&K数之和

    今天看了一道谷歌K数之和的算法题,忽然想起来之前在力扣上做过2、3、4数之和的题,觉得很有必要来整理一下。其实2、...

  • algrithrom

    求和问题,双指针解决 done 两数之和 三数之和 最接近三数之和 四数之和 链表反转问题 done 链表反转 链...

  • 「算法」两数之和 & 两数之和 II

    00001 两数之和 题目描述 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只...

  • 两数之和

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被...

  • 两数之和

    两数之和 题目描述 Given an array of integers, return indices of t...

网友评论

      本文标题:leetcode-javascript-1. 两数之和

      本文链接:https://www.haomeiwen.com/subject/jvcspctx.html