LeetCode 167. 两数之和 II - 输入有序数组C#
原题链接
简单
作者:
hpstory
,
2022-06-23 15:37:30
,
所有人可见
,
阅读 126
C# 双指针代码
public class Solution {
public int[] TwoSum(int[] numbers, int target) {
int[] result = new int[2];
for (int i = 0, j = numbers.Length - 1; i < j; i++){
while (numbers[i] + numbers[j] > target) j--;
if (i < j && numbers[i] + numbers[j] == target){
result[0] = i + 1;
result[1] = j + 1;
}
}
return result;
}
}
C# 二分代码
public class Solution {
public int[] TwoSum(int[] numbers, int target) {
int[] result = new int[2];
for (int i = 0; i < numbers.Length - 1; i++){
int num = numbers[i];
int left = i + 1, right = numbers.Length - 1;
while (left < right){
int mid = left + right + 1 >> 1;
if (numbers[mid] > target - num){
right = mid - 1;
}
else{
left = mid;
}
}
if (num + numbers[right] == target){
result[0] = i + 1;
result[1] = right + 1;
}
}
return result;
}
}