LeetCode 两数之和 II - 输入有序数组
Posted xhBruce
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 两数之和 II - 输入有序数组相关的知识,希望对你有一定的参考价值。
167. 两数之和 II - 输入有序数组
- 双层循环
- 添加判断break
class Solution {
public int[] twoSum(int[] numbers, int target) {
int[] answer = new int[2];
int n = numbers.length;
for (int i = 0; i < n - 1; i++) {
int t = target - numbers[i];
answer[0] = i + 1;
for (int j = i + 1; j < n; j++) {
if (numbers[j] > t) {
break;
}
if (numbers[j] == t) {
answer[1] = j + 1;
break;
}
}
if (answer[1] != 0) {
break;
}
}
return answer;
}
}
数组有序的性质
使用 二分法查找、双指针
二分法查找
class Solution {
public int[] twoSum(int[] numbers, int target) {
int n = numbers.length;
for (int i = 0; i < n - 1; i++) {
int t = target - numbers[i];
int left = i + 1, right = numbers.length - 1;
while (right >= left) {
int mid = (right - left) / 2 + left;
if (numbers[mid] == target - numbers[i]) {
return new int[]{i + 1, mid + 1};
} else if (numbers[mid] > target - numbers[i]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
}
return new int[]{-1, -1};
}
}
双指针
class Solution {
public int[] twoSum(int[] numbers, int target) {
int low = 0, high = numbers.length - 1;
while (low < high) {
int sum = numbers[low] + numbers[high];
if (sum == target) {
return new int[]{low + 1, high + 1};
} else if (sum < target) {
++low;
} else {
--high;
}
}
return new int[]{-1, -1};
}
}
请查看LeetCode官网说明:
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/solution/liang-shu-zhi-he-ii-shu-ru-you-xu-shu-zu-by-leet-2/
来源:力扣(LeetCode)
以上是关于LeetCode 两数之和 II - 输入有序数组的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 167. 两数之和 II - 输入有序数组 | Python
leetcode 两数之和 II - 输入有序数组 题解分析
leetcode 两数之和 II - 输入有序数组 题解分析