
-
这个题比较简单,题目中已知,这个数组是递增的,所以我们只需要用一个双指针,一个在前,一个在后,然后根据几种情况,不断的去调整这个前和后的位置即可。
- 第一种情况,前后的和大于目标值,说明后面的太大了,我们要将其调小点
- 第二种情况,前后的和小于目标值,说明前面的太小了,我们要将其调大点
-
/** *注意 *已知这个数组是非递减顺序 *下标从1开始 *每个输入只对应唯一的答案,找到一个就可以直接结束 */ int[] ans = new int[2]; int left = 0,right = numbers.length-1; while(left<right){ if(numbers[left]+numbers[right]>target){ right--; }else if(numbers[left]+numbers[right]<target){ left++; }else { ans[0]=left+1; ans[1]=right+1; break; } } return ans;

被折叠的 条评论
为什么被折叠?



