Loading...

LCR-006-两数之和II-输入有序数组

在这里插入图片描述

求解代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
    public int[] twoSum(int[] numbers, int target) {
        for(int i=0;i<numbers.length;i++){
            int left = i+1;
            int right = numbers.length-1;
            
            //二分查找是闭区间 [left, right],等号保证最后一个元素被检查,避免漏查
            while (left<=right) {
                int mid = left+((right-left)>>1);
                if(target-numbers[i]==numbers[mid]){
                    return new int[]{i,mid};
                }else if(target-numbers[i]>numbers[mid]){
                    left=mid+1;
                }else{
                    right=mid-1;
                }
            }
        }
        return new int[]{-1,-1};
    }

小贴士

前文【哈希】两数之和 是使用哈希做的,这次利用有序的特性,通过二分的方法完成。

最后更新于 2026-04-05 17:35:33
Code Road Record