当前位置: 首页 > news >正文

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.dtcms.com/a/250236.html

相关文章:

  • Magentic-ui项目相关整理
  • 如何自动化测试 DependencyMatcher 规则效果(CI/CD 集成最佳实践)
  • 60天python训练计划----day52
  • Flutter 状态管理与 API 调用的完美结合:从理论到实践
  • RapidNJ软件的安装
  • 独立看门狗(IWDG)与窗口看门狗(WWDG)
  • 6.14星期六休息一天
  • 从0开始学习语言模型--Day01--亲自构筑语言模型的重要性
  • IPv4详解
  • Qt:Qt桌面程序正常退出注意事项
  • 陈小群飞机随笔总结
  • 【编译原理】第九章 运行时存储
  • linux msyql8 允许远程连接
  • 数据库资源帖
  • 第11次课 深搜1 A
  • Javascript什么是回调函数?
  • LangChain面试内容整理-知识点13:输出解析(OutputParser)模块
  • Seata的事务隔离级别是如何保证的?
  • 案例:塔能科技智启某市光域,勾勒城市照明宏图
  • NY248NY254美光科技闪存NY258NY261
  • 使用 C# 源生成器(Source Generators)进行高效开发:增强 Blazor 及其他功能
  • 地理空间视角下的 SIR 传染病模型模拟与可视化
  • xilinx gt的RX EQ
  • C++ QT开发学习指南-从入门到实战项目
  • 浏览器的组成部分与工作原理
  • Spring Boot中Controller层规划与最佳实践详解
  • Docker全平台安装指南:从零到一构建容器化环境(满级版)
  • OVS Faucet Tutorial笔记(下)
  • CQF预备知识:Python相关库 -- 通用非均匀随机数抽样 scipy.stats
  • [架构之美]解决Windows 10主机与Windows 10虚拟机之间无法拖拽复制问题