算法题中的 mid 中点问题

目录

  • [mid 中点问题](#mid 中点问题)

mid 中点问题

两个 mid 写法

1️⃣ 1,标准中点(向下取整)

java 复制代码
// 标准中点(向下取整)
int mid = l + (r - l) / 2;
// 等价于
mid = floor((l + r) / 2);
// 偏左中点(left middle)

2️⃣ 2,偏右中点(向上取整)

java 复制代码
// 偏右中点(向上取整)
int mid = l + (r - l) / 2 + 1;
// 等价于
mid = ceil((l + r) / 2);
// 偏右中点(right middle)

为什么不用 (l + r) / 2?

(l + r) / 2 ❌可能整数溢出

当 l,r 接近 Integer.MAX_VALUE:

l + r 会溢出变负数

所以统一写:

l + (r - l) / 2

偏左 mid vs 偏右 mid 的本质区别

👉 区间只有两个元素时:
偏左中点是left
偏右中点是right

在二分模板中

java 复制代码
// 模板 A:找左边界(更新 r)
while (l < r) {
    int mid = l + (r - l) / 2;   // 偏左
    if (check(mid)) r = mid;
    else l = mid + 1;
}
// 因为这里是 r = mid   → mid 必须偏左,否则 r 不动,会死循环


// 模板 B:找右边界(更新 l)
while (l < r) {
    int mid = l + (r - l) / 2 + 1; // 偏右
    if (check(mid)) l = mid;
    else r = mid - 1;
}
// 因为这里是 l = mid → mid 必须偏右,否则 l 不动,会死循环

二分模板总结

模板 1:找第一个满足条件的位置(lower bound)

👉 左边界

java 复制代码
while (l < r) {
    int mid = l + (r - l) / 2;
    if (check(mid)) r = mid;
    else l = mid + 1;
}

模板 2:找最后一个满足条件的位置(upper bound)

👉 右边界

java 复制代码
while (l < r) {
    int mid = l + (r - l) / 2 + 1;
    if (check(mid)) l = mid;
    else r = mid - 1;
}

LeetCode 高频场景对照表

题型 mid 写法

找最小满足 偏左 mid

找最大满足 偏右 mid

普通二分 偏左 mid

分治 merge sort 偏左 mid

快速选择 偏左 mid

为什么分治一般用偏左 mid?

比如 merge sort:

mid = (l + r) / 2

left = l, mid

right = mid+1, r

必须保证区间不重叠、不丢元素。

相关面试问题

❓ 为什么要 +1?

👉 防止 l 不移动导致死循环

👉 用于找"右边界"

❓ 偏左 vs 偏右什么时候用?

👉 取决于你更新的是 l 还是 r

终极口诀

找左边界 → 偏左 mid

找右边界 → 偏右 mid

防死循环 → l = mid 时必须 +1

相关推荐
爱刷碗的苏泓舒31 分钟前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
烬羽3 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法
闪电悠米3 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
星空露珠4 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
QXWZ_IA6 小时前
桥梁数字孪生怎么落地?
人工智能·科技·算法·智能硬件·政务
Kel6 小时前
输出层与反分词(Output Layer & Detokenization)
人工智能·算法·架构
陕西企来客6 小时前
2026年7月技术好GEO优化方案:算法适配与内容策略
人工智能·算法·机器学习·技术好geo优化
风栖柳白杨6 小时前
【面试】AI算法工程师_空白自测版本
人工智能·算法·面试
闪电悠米8 小时前
力扣hot100-73.矩阵置零-标记数组详解
算法·leetcode·矩阵
栋***t8 小时前
从“纸质试卷”到“AI智能组卷”,麦塔在线考试系统如何重构出题逻辑?
java·大数据·人工智能·算法·重构