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};
    }

小贴士

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

相关推荐
木辰風5 小时前
PLSQL自定义自动替换(AutoReplace)
java·数据库·sql
2501_944525545 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 预算详情页面
android·开发语言·前端·javascript·flutter·ecmascript
heartbeat..5 小时前
Redis 中的锁:核心实现、类型与最佳实践
java·数据库·redis·缓存·并发
5 小时前
java关于内部类
java·开发语言
好好沉淀5 小时前
Java 项目中的 .idea 与 target 文件夹
java·开发语言·intellij-idea
gusijin5 小时前
解决idea启动报错java: OutOfMemoryError: insufficient memory
java·ide·intellij-idea
To Be Clean Coder5 小时前
【Spring源码】createBean如何寻找构造器(二)——单参数构造器的场景
java·后端·spring
lsx2024065 小时前
FastAPI 交互式 API 文档
开发语言
吨~吨~吨~5 小时前
解决 IntelliJ IDEA 运行时“命令行过长”问题:使用 JAR
java·ide·intellij-idea
你才是臭弟弟5 小时前
SpringBoot 集成MinIo(根据上传文件.后缀自动归类)
java·spring boot·后端