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 - 输入有序数组 题解分析

LeetCode 两数之和 II - 输入有序数组

LeetCode 0167. 两数之和 II - 输入有序数组

《LeetCode之每日一题》:249.两数之和 II - 输入有序数组