【剑斩OFFER】算法的暴力美学——点名

一、题目描述

二、算法原理

当我们看到这道题目时,我们一般是直接从题目给出的数组来找这些数字的规律,题目给出的数字的除了这些数字是逐渐递增的,就没了。所以我们不防从把数组的下标写出来,此时我们可以看到数组的数字和下标相等时,代码没有数字缺少,反之就是缺少一个数字;从数组的下标结合题目给出的数组来看,只要找缺少数字的那小部分的数组的最左边就是缺少的那个数字,当然缺少的不是上面绿色部分的8而是他的下标7。

思路:二分查找的最左端的二分查找的模板

当数组的中间点处于蓝色部分的数字时,让left往mid的后面找,不包含 mid :

if:nums mid - mid == 0 ,left = mid + 1

else :right = mid

循环条件:left < right

求中点的方式:int mid = left + ( right - left )/2

特殊情况:

解决方法:left == records left ,表明里面没有数组里面没有缺少的数字,但是题目要求我们至少要一个数字缺少,所以:return recordes left + 1

三、代码实现

cpp 复制代码
class Solution {
public:
    int takeAttendance(vector<int>& records) {
        int left = 0, right = records.size() - 1;
        while(left < right)
        {
            int mid = left +  (right - left)/2;
            if(records[mid] - mid) right = mid;
            else left = mid + 1;
        }
        if(left == records[left]) return records[left] + 1;//处理特殊情况
        return left;
    }
};
相关推荐
爱刷碗的苏泓舒9 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
烬羽11 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法
闪电悠米12 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
WL学习笔记12 小时前
堆(数据结构)
数据结构·
星空露珠12 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
QXWZ_IA14 小时前
桥梁数字孪生怎么落地?
人工智能·科技·算法·智能硬件·政务
Kel14 小时前
输出层与反分词(Output Layer & Detokenization)
人工智能·算法·架构
陕西企来客14 小时前
2026年7月技术好GEO优化方案:算法适配与内容策略
人工智能·算法·机器学习·技术好geo优化
风栖柳白杨14 小时前
【面试】AI算法工程师_空白自测版本
人工智能·算法·面试
闪电悠米16 小时前
力扣hot100-73.矩阵置零-标记数组详解
算法·leetcode·矩阵