两数之和
给定一个整数数组 nums 和一个整数目标值 target,
请你在该数组中找出 和为目标值 target 的那 两个 整数,
并返回它们的数组下标。
代码版本【1】
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let result = []
try{
nums.forEach((item,index) => {
let outList = nums.filter(_v => _v != item)
outList.forEach(item1 => {
if(item1 + item == target) {
result.push(index)
result.push(nums.indexOf(item1))
throw new Error('error')
}
})
})
} catch(e) {
console.log(e)
}
return result
};
本来以为很完美
数组中包含相同值 以上方法中nums.filter 会将相同的值过滤掉
版本【2】
var twoSum = function(nums, target) {
let result = []
try{
nums.forEach((item,index) => {
let outList = nums.filter((_v, _index) => _index != index)
outList.forEach(item1 => {
if(item1 + item == target) {
result.push(index)
result.push(nums.indexOf(item1))
throw new Error('error')
}
})
})
} catch(e) {
console.log(e)
}
return result
};
本来已经解决了又有新问题
相同数值获取下标有问题
版本【3】
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
const twoSum = function(nums, target) {
let result = []
try{
nums.forEach((item,index) => {
let temp = JSON.parse(JSON.stringify(nums))
delete temp[index]
temp.forEach((item1, _index) => {
if(item1 + item == target) {
result.push(index, _index)
throw new Error('error')
}
})
})
} catch(e) {
console.log(e)
}
return result
};