当前位置: 首页 > 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++编程

相关文章:

  • 【函数解析】腐蚀与膨胀操作 skimage.morphology.dilation / erosion
  • Python pip下载包及依赖到指定文件夹
  • MAC如何安装多版本jdk(以8,11,17为例)
  • SplitReason:在复杂步骤借助更大尺寸模型推理,1.5B+32B,实现准确率28%提升+8倍速度提升
  • 医院信息管理系统全解析
  • vue跨域问题总结笔记
  • Flinkcdc 实现 MySQL 写入 Doris
  • GoLand包的爆红问题解决
  • laravel中layui的table翻页不起作用问题的解决
  • Qt/C++面试【速通笔记五】—子线程与GUI线程安全交互
  • day004-习题
  • WPF之Label控件详解
  • 从零开始的二三维CAD软件开发: 系列经验分享-写在开头
  • Android Studio 安装 Continue插件
  • JavaScript:从DOM概述到window对象的常见事件
  • C++ 部署的性能优化方法
  • terraform 动态块(Dynamic Blocks)详解与实践
  • SpringBoot启动后自动执行方法的各种方式-笔记
  • MATLAB 汽车行驶过程避障模拟简化
  • 【ACL系列论文写作指北09-参考文献与引用管理】-学术诚信与视野的体现
  • 葡萄牙、西班牙发生大范围停电
  • 早睡1小时,变化有多惊人?第一个就没想到
  • 因高颜值走红的女通缉犯出狱后当主播自称“改邪归正”,账号已被封
  • 我国核电总体规模首次跃居世界第一,发电量持续增长
  • 持续更新丨伊朗内政部长:港口爆炸已致8人死亡750人受伤
  • 亚振家居控制权将变更:济南域潇集团实控人成新控股股东