一、题目描述
二、示例
三、难度
中等
四、代码
Java版
public class Solution {
public static int[] twoSum(int[] numbers, int target) {
int left = 0, right = numbers.length-1;
while (numbers[left] + numbers[right] != target && left < right) {
if (numbers[left] + numbers[right] > target) {
-- right;
}
else if (numbers[left] + numbers[right] < target) {
++ left;
}
}
return new int[]{left+1,right+1};
}
public static void main(String[] args) {
int[] arr = new int[]{-1,0};
System.out.println(Arrays.toString(twoSum(arr,-1)));
}
}
C++版
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
int left = 0, right = numbers.size()-1;
while (left < right) {
int sum = numbers[left] + numbers[right];
if(sum == target) return vector<int>{left+1,right+1};
else if (sum < target) ++left;
else --right;
}
return vector<int>(2,-1);
}
};
补充
vector<int> v1(8); //v1有8个元素,每个数的值都是0
vector<int> v2{8}; //v2有1个元素,值是8
vector<int> v3(7,6); //v3有7个元素,每个数的值都是6
vector<int> v4{6,3}; //v4有2个元素,值分别是6和3