题目
乍一看,中等题,一做发现并不是
思路
双指针-双向指针向中间逼近
定义两个指针 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; } }