小白的算法之路javascript
給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和爲目標值的那 兩個 整數,並返回他們的數組下標。
你能夠假設每種輸入只會對應一個答案。可是,數組中同一個元素不能使用兩遍。
示例:給定 nums = [2, 7, 11, 15], target = 9
由於 nums[0] + nums[1] = 2 + 7 = 9因此返回 [0, 1]
題目來源java
如下解法僅是小白我的見解,若有考慮不周的地方歡迎指正
簡單的說一下本身的思路:
個人想法是第一遍遍歷數組,假設第一個值能夠和後面的某一個值相加等於target值 如此將其索引值放在空數組中第二遍遍歷數組是爲了肯定後面是否真的存在某個值能夠和假設的值相加等於target 若是不存在就將原先的加入數組中的索引值拿掉(這裏能夠將本身定義的數組在置空)進行下一次假設循環 若是存在 就將後面的值的索引值加入到數組中最後打印數組算法
值得注意的是:要考慮空數組只能有兩個值 如何解決數組中的值的數量問題
數組
var twoSum = function (nums, target) { var arr = []; nums.forEach(function (item, i, nums) { if (arr.length >= 2) return arr.push(i); nums.forEach(function (value, index, nums) { if (i == index) return if (item + value === target) { arr.push(index); return } }) if (arr.length < 2) { var num = arr.indexOf(i); arr.splice(num, 1); } }) return arr }; var res = twoSum([3, 2, 4], 6); console.log(res);
感受這個方法是暴力解決問題的,不是很好 對於小白來講能過解決就不錯了 但願大佬看見可以指導一波那就更美好了code