两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
借助api
function twoSum(nums,target){
for(let i = 0;i < nums.length;i++){
let item = nums[i]
if(nums.indexOf(target - item) > -1 && nums.indexOf(target - item) != i){
return [i,nums.indexOf(target - item)].sort()
}
}
}
双层循环不可用 时间复杂度O(n^2)
const twoSum = (nums, target) => {
for(let i = 0; i < nums.length - 1; i++){
const iv = nums[i]
for(let j = i + 1; j < nums.length; j++){
const jv = nums[j]
if(iv + jv === target){
return [i, j]
}
}
}
return []
};
双指针(需已排序数组)
// 双指针思路
const twoNumsSumByDoublePointer = (arr = [1,2,3,4,5,6,7,8,9], sum = 6) => {
let startIndex = 0
let endIndex = arr.length - 1
while(startIndex < endIndex){
const startValue = arr[startIndex]
const endValue = arr[endIndex]
const sumValue = startValue + endValue
if(sumValue > sum){
endIndex--
}else if(sumValue < sum){
startIndex++
}else{
return [startIndex, endIndex]
}
}
return []
}
Leecode提交通过
以自己现在的努力程度,还没有资格和别人拼天赋

浙公网安备 33010602011771号