题目:167. 两数之和 II - 输入有序数组


思路:双指针,时间复杂度0(n)。
C++版本:
class Solution {
public:vector<int> twoSum(vector<int>& numbers, int target) {vector<int>v;int i=0,j=numbers.size()-1;while(i<j){if(numbers[i]+numbers[j]==target){v.push_back(i+1);v.push_back(j+1);break;}else if(numbers[i]+numbers[j]>target){j--;}else{i++;}}return v;}
};
JAVA版本:
class Solution {public int[] twoSum(int[] numbers, int target) {int[] v=new int[2];int i=0,j=numbers.length-1;while(i<j){if(numbers[i]+numbers[j]==target){v=new int[]{i+1,j+1};break;}else if(numbers[i]+numbers[j]>target){j--;}else{i++;}}return v;}
}
GO版本:
func twoSum(numbers []int, target int) []int {v:=make([]int,2)i,j:=0,len(numbers)-1for i<j {if numbers[i]+numbers[j]==target {v[0]=i+1v[1]=j+1break}else if numbers[i]+numbers[j]<target {i++}else{j--}}return v
}