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

求解代码

java 复制代码
    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};
    }

小贴士

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

相关推荐
Barkamin10 小时前
队列的实现(Java)
java·开发语言
hixiong12311 小时前
C# OpenvinoSharp使用RAD进行缺陷检测
开发语言·人工智能·c#·openvino
小浪花a11 小时前
计算机二级python-jieba库
开发语言·python
骇客野人11 小时前
自己手搓磁盘清理工具(JAVA版)
java·开发语言
J2虾虾11 小时前
在SpringBoot中使用Druid
java·spring boot·后端·druid
清风徐来QCQ11 小时前
Java笔试总结一
java·开发语言
lly20240611 小时前
《jEasyUI 转换 HTML 表格为数据网格》
开发语言
萧曵 丶11 小时前
LangChain Model IO 提示词模版(Python版)
开发语言·python·langchain
Elastic 中国社区官方博客11 小时前
Elastic 为什么捐赠其 OpenTelemetry PHP 发行版
大数据·开发语言·elasticsearch·搜索引擎·信息可视化·全文检索·php
10Eugene11 小时前
C++/Qt自制八股文
java·开发语言·c++