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

昆明理工大学2025年891计算机专业核心考研真题解析

昆明理工大学2025年891计算机考研真题解析 | 最小未出现正整数(附高效C++实现)

【昆明理工大学891计算机专业核心综合考研】 👨 作者:唐维康

题目描述

给定一个含n(n≥1)个整数的数组,设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。

示例

  • 输入:{-5, 3, 2, 3} → 输出:1

  • 输入:{1, 2, 3} → 输出:4

  1. 给出算法的基本设计思想。

  2. 根据设计思想,采用C/C++语言描述算法,关键之处给出注释。

  3. 说明你所设计算法的时间复杂度和空间复杂度。

解题思路与代码实现

1. 算法设计思想

🔥 核心目标:时间复杂度O(n),空间复杂度O(1)关键步骤

  1. 原地哈希:利用数组本身记录正整数出现情况,将数值x映射到索引x-1的位置。

  2. 两次遍历

    • 第一次遍历:将合法的正整数交换到正确位置。

    • 第二次遍历:找出第一个“位置不匹配”的索引,其对应值即为结果。

  3. 边界处理:若所有位置均匹配,则结果为数组长度+1

2. C++代码实现

 #include <vector>using namespace std;​int findMissingMinPositive(vector<int>& nums) {int n = nums.size();// 第一次遍历:将正整数放到正确的位置for (int i = 0; i < n; ++i) {// 若当前数在合法范围内,且未在正确位置,则交换while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) {swap(nums[i], nums[nums[i] - 1]);}}// 第二次遍历:寻找第一个不匹配的位置for (int i = 0; i < n; ++i) {if (nums[i] != i + 1) {return i + 1;}}// 所有位置均匹配,返回n+1return n + 1;}

3. 复杂度分析

  • 时间复杂度O(n)

    每个元素最多被交换一次,两次遍历均为O(n)

  • 空间复杂度O(1)

    原地修改数组,未使用额外空间。

真题解析示例

示例1:输入{-5, 3, 2, 3}

  1. 第一次遍历后数组变为{2, 3, -5, 3}(数字1未出现)。

  2. 第二次遍历发现nums[0]=2≠1,返回1

示例2:输入{1, 2, 3}

  1. 数组已经是{1, 2, 3},所有位置匹配。

  2. 返回3+1=4

💥 获取完整真题集及答案解析请看水印!

昆明理工大学考研 #计算机专业综合 #891真题 #算法题解析 #考研资料群 #C++编程

http://www.xdnf.cn/news/196129.html

相关文章:

  • react中有哪几种数据结构?分别是干什么的?
  • 易基因:何川团队开发新m6A测序方法 可温和条件下高分辨率/低背景噪声检测m6A修饰|Nature子刊
  • MCU通用输入输出端口(GPIO)设计指南
  • 在另外一台可以科学下载的电脑用ollama下载模型后,怎么导入到另外一台服务器的ollama使用
  • 龙虎榜——20250428
  • 前端excel导出
  • 北重数控滑台加工厂家:汽车零部件试验铁地板-安全性能的测试方法
  • dameng-mcp-server达梦MCP服务
  • Web基础和HTTP协议
  • cuDNN 安装、版本查看及指定版本删除操作指南
  • 网络准入控制系统推荐:2025年构建企业网络安全的第一道防线
  • 运维打铁:域名详解及常见问题解决
  • 【C++】线程池
  • 【问题】docker容器修改环境变量的方式
  • SplitReason:在复杂步骤借助更大尺寸模型推理,1.5B+32B,实现准确率28%提升+8倍速度提升
  • 编程日志4.23
  • 【Linux内核设计与实现】第三章——进程管理05
  • SSO单点登录
  • 通过DeepSeek大语言模型控制panda机械臂,听懂人话,拟人性回答。智能机械臂助手又进一步啦
  • 大模型在肝硬化腹水风险预测及临床方案制定中的应用研究
  • AWS虚拟专用网络全解析:从基础到高级实践
  • 【Spark入门】Spark架构解析:组件与运行机制深度剖析
  • vim粘贴代码格式错乱 排版错乱 缩进错乱 解决方案
  • 【软件工程】需求分析详解
  • 24体育NBA足球直播M28模板体育赛事直播源码
  • 介绍下Nginx的作用与请求转发机制
  • Windows操作系统核心知识解析
  • C++ 表达式求值优先级、结合律与求值顺序(五十九)
  • 关于https请求丢字符串导致收到报文解密失败问题
  • 第二章:Agent System