摘自leecode,链接: https://leetcode-cn.com/problems/two-sum/.
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
版本一:暴力解法,使用两个循环,还有值相同的情况单独处理
运行状况:
执行用时:524 ms
内存消耗:41.8 MB
var twoSum = function(nums, target) {
let indexList = []
let isFind = false
if (nums.length == 0) {
return
}
if (nums.length > 0) {
nums.map((item, index) => {
let _nums = nums.slice(index + 1)
let _target = target - item
_nums.length > 0 && _nums.map((ele, eIdx) => {
if (ele == _target) {
nums.splice(index, 1, '')
let lastIndex = nums.indexOf(ele)
if (isFind) return
indexList = [index, lastIndex]
isFind = true
}
})
})
}
return indexList
};
版本二:使用pop方法避免值重复的情况
运行状况:
执行用时:132 ms
内存消耗:32.8 MB
扫描二维码关注公众号,回复:
17008347 查看本文章
var twoSum = function(nums, target) {
let indexList = []
if (nums.length == 0) {
return
}
if (nums.length > 0) {
while (indexList.length <= 0) {
let _target = nums.pop()
console.log(nums, _target, nums.indexOf(target - _target))
if (nums.indexOf(target - _target) > -1) {
indexList = [nums.indexOf(target - _target), nums.length]
}
}
}
return indexList
};
如有问题请与我联系~
欢迎接入QQ群~