LeetCode - LCR 173. 点名

题目

LCR 173. 点名 - 力扣(LeetCode)

思路

首先对数组进行排序,使学号按顺序排列

在排序后的数组中,如果没有缺失的学号,那么每个元素应该等于其索引值

使用二分查找找到第一个不等于其索引的元素位置:

  • 如果 records[mid] == mid,说明缺失的数字在右半部分
  • 如果 records[mid] > mid,说明缺失的数字在左半部分(包括mid)

循环结束时,left 指向的是第一个不等于其索引的位置,即缺失的学号

时间复杂度:O(n log n),主要是排序的时间复杂度

空间复杂度:O(1),只使用常数额外空间

读者可能出现的错误写法 

class Solution {
public:int takeAttendance(vector<int>& records) {int left = 0;int right = records.size()-1;while(left < right){int mid = left + (right - left)/2;if(records[mid] == mid){left = mid+1;}else{right = mid;}}return right;}
};

边界情况处理:

你的代码没有处理缺失的是最后一个数字(即n-1)的情况。循环结束后,如果 records[right] == right,说明缺失的是最后一个数字。

正确写法

class Solution {
public:int takeAttendance(vector<int>& records) {int left = 0;int right = records.size()-1;while(left < right){int mid = left + (right - left)/2;if(records[mid] == mid){left = mid+1;}else{right = mid;}}if(records[left] == right){return right+1;}return right;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VSCode如何优雅的debug python文件,包括外部命令uv run main.py等等

debug程序的方式有很多种。每一种方式都各有缺点:有的方式虽然优雅,但是局限性很大;有的方式麻烦,但是局限性小。 常规方式: 优点:然后可以观察所有线程。一劳永逸。缺点:就是写参数很麻烦,但是你可以让chatgpt等大模型帮你写。最最最优雅的方式: 优点:就是需要在代码…

[调试技巧]VS Code如何在代理模式下使用 MCP 工具?

在开发环境调试MCP&#xff0c;通过agent模式与大模型对话&#xff0c;并不能保证每次均正确调用tool。在阅读官方文档之后&#xff0c;得知以下小技巧。 添加 MCP 服务器后&#xff0c;您可以在代理模式下使用它提供的工具。要在代理模式下使用 MCP 工具 打开聊天视图 (CtrlAl…

京东零售基于Flink的推荐系统智能数据体系 |Flink Forward Asia 峰会实录分享

京东推荐系统的数据体系极其复杂&#xff0c;从召回、模型到策略和效果评估&#xff0c;每个环节都需要强大的海量数据处理能力支撑。然而&#xff0c;在实际运行中&#xff0c;整个数据链路面临着诸多挑战&#xff1a;如实时与离线数据的埋点口径不一致、数仓模型存在偏差、计…

[学习] 牛顿迭代法:从数学原理到实战

牛顿迭代法&#xff1a;从数学原理到实战 ——高效求解方程根的数值方法 文章目录 牛顿迭代法&#xff1a;从数学原理到实战一、引言&#xff1a;为什么需要牛顿迭代法&#xff1f;二、数学原理&#xff1a;几何直观与公式推导1. **核心思想**2. **几何解释**3. **收敛性分析*…

使用 Git 将本地仓库上传到 GitHub 仓库的完整指南

使用 Git 将本地仓库上传到 GitHub 仓库的完整指南 一、引言 在现代软件开发中&#xff0c;版本控制工具 Git 已成为不可或缺的一部分。GitHub 作为全球最大的代码托管平台&#xff0c;为开发者提供了代码协作、项目管理和开源贡献的便捷方式。本文将详细介绍如何通过 Git 将本…

数据结构 - 栈与队列

栈&#xff1a;限定仅在表尾进行插入或删除操作的线性表。 表尾端有特殊含义&#xff0c;称为栈顶&#xff08;top&#xff09;。 相应的&#xff0c;表头端称为栈底&#xff08;buttom&#xff09;。不含元素的空表成为空栈。 栈又称为后进先出的线性表&#xff08;Last In…

jojojojojo

《JOJO的奇妙冒险》是由日本漫画家荒木飞吕彦所著漫画。漫画于1987年至2004年在集英社的少年漫画杂志少年JUMP上连载&#xff08;1987年12号刊-2004年47号刊&#xff09;&#xff0c;2005年后在集英社青年漫画杂志Ultra Jumphttps://baike.baidu.com/item/Ultra%20Jump/2222322…

统计学核心概念与现实应用精解(偏机器学习)

统计学听起来似乎很复杂&#xff0c;但其实它的核心就是两个概念&#xff1a;概率分布和期望。这两个概念就像是我们日常生活中的决策助手。 概率分布描述了随机事件各种可能结果出现的可能性大小。比如&#xff0c;掷骰子时每个点数出现的概率&#xff0c;这就是一个典型的概…

go-carbon v2.6.8 发布,轻量级、语义化、对开发者友好的 golang 时间处理库

carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库&#xff0c;提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持。 carbon 目前已捐赠给 dromara 开源组织&#xff0c;已被 awesome-go 收录&am…

228永磁同步电机无速度算法--基于双重锁相环的滑模观测器

一、原理介绍 在传统的正交锁相环的基础上&#xff0c;利用前述滤波器、ZOH、代数环等非理想因素对电流信号进行延迟重构&#xff0c;进而得到一个与实际电流信号存在相位偏差的重构信号&#xff0c;且该相位偏差等同于初步估计位置信号与实际位置信号之间的相位偏差。将该重构…

零基础入门 线性代数

线性代数是一种代数结构&#xff0c;通俗来讲&#xff0c;向量空间是这个结构的基石&#xff0c;我们要在向量空间中研究向量与向量的关系 一 对象&#xff1a;向量 各位都有对象嘛&#xff1f;如果没有对象&#xff0c;想不想知道你们的天命之人是谁捏&#xff1f;如果有对象…

IO之cout格式控制

目录 简单了解cout是什么&#xff1f; 什么是字节流 默认格式控制 修改计数系统 调整字符宽度 填充字符 设置浮点数显示精度 打印末尾的0和小数点 其他格式控制符 right--->设置为右对齐&#xff0c;永久生效 left--->设置为左对齐&#xff0c;永久生效 fixed--…

探索铸铁试验平台在制造行业的卓越价值

铸铁试验平台在制造行业中具有重要的价值和作用。以下是铸铁试验平台在制造行业中的卓越价值&#xff1a; 提高产品质量&#xff1a;铸铁试验平台可以模拟各种生产条件和环境&#xff0c;并对铸铁产品进行精确的测试和评估。通过实验平台的测试&#xff0c;可以发现产品在不同条…

gpt3大模型蒸馏后效果会变差么

模型蒸馏&#xff08;Model Distillation&#xff09;是将复杂的 “教师模型”&#xff08;如 GPT-3&#xff09;的知识迁移到更轻量级的 “学生模型” 上的技术。蒸馏后的模型效果是否会变差&#xff0c;取决于多种因素&#xff0c;不能一概而论。以下是详细分析&#xff1a; …

SQL进阶之旅 Day 30:SQL性能调优实战案例

【SQL进阶之旅 Day 30】SQL性能调优实战案例 文章简述&#xff1a; 在数据库系统中&#xff0c;SQL查询的性能直接影响到整个应用的响应速度和用户体验。本文作为“SQL进阶之旅”系列的第30天&#xff0c;聚焦于SQL性能调优实战案例&#xff0c;通过多个真实业务场景中的SQL优…

【61 Pandas+Pyecharts | 基于Apriori算法及帕累托算法的超市销售数据分析可视化】

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据2.2 数据信息2.3 数据去重2.4 订单日期处理提取年份2.5 产品名称处理 &#x1f3f3;️‍&#x1f308; 3. Pyecharts数据可视化3.1 每年销售额和利润分布3.2…

每日算法刷题Day31 6.14:leetcode二分答案2道题,结束二分答案,开始枚举技巧,用时1h10min

7. 1439.有序矩阵中的第K个最小数组和(困难,学习转化为373) 1439. 有序矩阵中的第 k 个最小数组和 - 力扣&#xff08;LeetCode&#xff09; 思想 1.给你一个 m * n 的矩阵 mat&#xff0c;以及一个整数 k &#xff0c;矩阵中的每一行都以非递减的顺序排列。 你可以从每一行…

springMVC-13 文件下载及上传

文件下载-ResponseEntity<T> 说明 在SpringMVC中&#xff0c;通过返回ResponseEntity<T>的类型&#xff0c;可以实现文件下载的功能 核心代码&#xff1a;就是设置HttpHeader 文件下载响应头的设置 content-type 指示响应内容的格式 content…

数据库学习笔记(十六)--控住流程与游标

前言&#xff1a; 学习和使用数据库可以说是程序员必须具备能力&#xff0c;这里将更新关于MYSQL的使用讲解&#xff0c;大概应该会更新30篇&#xff0c;涵盖入门、进阶、高级(一些原理分析);这一篇和上一篇差不多&#xff0c;当做扩展&#xff0c;用到的时候再查即可(毕竟数据…

《Origin画百图》之核密度图

核密度图&#xff08;Kernel Density Plot&#xff09; 是一种用于展示数据分布形态的可视化工具&#xff0c;它通过平滑的曲线来估计数据的概率密度函数&#xff0c;相比直方图能更细腻地呈现数据的分布特征。 具体步骤&#xff1a; &#xff08;1&#xff09;选中数据&#…