没学算法之前
学习相关算法后
算法使人严谨 - 算法让我的460的大脑重新运转 坚持每日算法 越努力,越优秀,越快乐
题目
乍一看,中等题,一做发现并不是
思路
双指针-双向指针向中间逼近
- 定义两个指针 i 和 j ,分别从数组两头开始
- 建立循环体 while(i<j)
- 求和 sum=num[i]+num[j]
- 判断 sum是否=目标值target
等于:保存下标,直接返回
大于:j–
小于:i++
代码
class Solution {
public int[] twoSum(int[] numbers, int target) {
int[] res=new int[2];
int i=0,j=numbers.length-1;
while(i<j){
int sum=numbers[i]+numbers[j];
if(sum==target){
res[0]=i+1;
res[1]=j+1;
return res;
}
if(sum>target){
j--;
}
if(sum<target){
i++;
}
}
return res;
}
}