https://leetcode-cn.com/problems/he-wei-sde-liang-ge-shu-zi-lcof/
简单的两数之和,使用双指针方法,一前一后的方式,如果当前的前后两者的和大于target的时候则将对应的fast的值减少,小于的时候则增加对应的slow指针的值,其实这里不是快慢的问题,直接使用left和right的方式表示更加合适。代码如下:实现的语言JavaScript
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let slow = 0 ;
let fast = nums.length - 1;
if(fast === 0) return [];
while(slow < fast) {
while(nums[slow] + nums[fast] > target && slow < fast) {
console.log(fast);
fast --;
}
while(nums[slow] + nums[fast] < target && slow < fast) {
slow++;
}
if(nums[slow] + nums[fast] === target) {
return [nums[slow], nums[fast] ];
}
}
return [];
};
理解上将其中的slow和fast理解为快慢指针,这里因为数组是有序的时候,所以这样实现比较好!注意加上判断条件否则会死循环!