算法基础-二分查找

左闭右闭 left,right 1,1可以

while( left <= right )
if( amid > target )
right = mid - 1
else if( amid < target )
left = mid + 1

左闭右开 [ left,right ) [1,1)不可以

while( left < right )
if( amid > target ) 已经>target,开区间right = mid
right = mid
else if( amid < target )
left = mid + 1

java 复制代码
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        int l, r;
        int[] a = new int[n];
        for(int i = 0; i < n; i ++)
            a[i] = in.nextInt();

        while(m -- > 0) {
            int first = -1, last = -1;
            int x = in.nextInt();
            l = 0;
            r = n - 1;
            while(l <= r) {
                int mid = (l + r) / 2;
                if(a[mid] > x) {
                    r = mid - 1;
                } else if(a[mid] < x) {
                    l = mid + 1;
                } else {
                    first = mid;
                    r = mid - 1;
                }
            }
            l = 0;
            r = n - 1;
            while(l <= r) {
                int mid = (l + r) / 2;
                if(a[mid] > x) {
                    r = mid - 1;
                } else if(a[mid] < x) {
                    l = mid + 1;
                } else {
                    last = mid;
                    l = mid + 1;
                }
            }
            System.out.println(first + " " + last);
        }
    }
}
相关推荐
workflower10 分钟前
基于机器学习的设备故障预测分析方法
人工智能·算法·机器学习·设计模式·语言模型·自然语言处理·重构
格发许可优化管理系统15 分钟前
Mentor许可证与其他软件许可证的深度比较
java·大数据·运维·c语言·c++·算法
wjcroom22 分钟前
时空和电子7-泡力模型含罗量
人工智能·算法·机器学习
KaMeidebaby26 分钟前
卡梅德生物技术快报 | Fab 合成文库构建与抗体筛选实验流程及数据解析
人工智能·python·tcp/ip·算法·机器学习
金融小师妹29 分钟前
基于AI事件驱动模型与验证溢价框架的市场分析:从预期交易到事实验证,原油与黄金面临关键定价重构
大数据·人工智能·算法·均值算法·线性回归
xxwl58535 分钟前
工作室小测的部分记录
c++·学习·算法
智者知已应修善业39 分钟前
【51单片机串口通信甲机四个按键模拟四位二进制值发送乙机以十进制显示2位数码管】2024-6-14
c++·经验分享·笔记·算法·51单片机
KobeSacre39 分钟前
划分为k个相等的子集
算法·leetcode·深度优先
不会就选b41 分钟前
算法日常・每日刷题--<二分查找>2
算法
郝学胜_神的一滴1 小时前
完全二叉树与堆底层原理深度剖析 | 手写C++大顶堆实现
数据结构·算法