千家信息网

如何用C++找出第一个正整数

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"如何用C++找出第一个正整数",在日常操作中,相信很多人在如何用C++找出第一个正整数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何用C++找出第
千家信息网最后更新 2026年11月01日如何用C++找出第一个正整数

这篇文章主要介绍"如何用C++找出第一个正整数",在日常操作中,相信很多人在如何用C++找出第一个正整数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何用C++找出第一个正整数"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. 题目描述

给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。

2. 解题思路

/*解题思路:1、第一个正数为:大于0的整数,如1、2、3、4、5...2、将数字放到正确的位置: nums[i]:存储在下标为nums[i]-1位置,不符合该规则的跳过3、遍历数组返回第一个: nums[i]!=i+1的数,为缺失的第一个正数,否则返回numsSize+1*/

3. 测试结果

4. 解法1

int firstMissingPositive(int* nums, int numsSize) {    //mid临时变量用于数据交换    int mid = 0;    //遍历nums数组    for (int i = 0; i < numsSize; i++)    {        //将 nums[i]:存储在下标为nums[i]-1位置,不符合该规则的跳过        while ((nums[i] > 0) && (nums[i] < numsSize + 1) && (nums[i] != nums[nums[i] - 1])) {            mid = nums[i];            nums[i] = nums[mid - 1];            nums[mid - 1] = mid;        }    }    //设置返回值变量res,如果所有值位置都正确,则返回numsSize+1    int res = numsSize + 1;    //遍历数组,返回第一个位置不正确的数    for (int i = 0; i < numsSize; i++)    {        if (nums[i] != i + 1) {            res = i + 1;            break;        }    }    return res;}

到此,关于"如何用C++找出第一个正整数"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

整数 C++ 位置 数组 学习 示例 输入 输出 变量 思路 更多 正数 帮助 复杂 实用 最小 接下来 复杂度 常数 数字 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技企业 小米移动互联网科技园 深圳互联网络科技有限公司 互联网科技公司有哪些 上海卓越科技 互联网 多迪互联网科技有限公司 互联网科技有限公司 翻译 蓝色互联网科技 西藏七维空间互联网科技有限公司 互联网经济与金融科技 宁夏科技产业互联网案例 乌苏新华互联网科技做什么的 为客找房互联网科技公司怎么样 互联网科技圈年度人物 互联网企业科技类企业如何做账 抖集互联网科技技术咨询 互联网科技手抄报图片 长沙易易互联网科技有限公司 北京瑞云互联网科技有限公司 互联网科技创业有什么好项目 云南咖啡 中国互联网科技股 厦门中拓互联网络科技有限公司 成都狮子座互联网科技 互联网和高科技公司 互联网实体化科技化 工业互联网科技成果转化 青岛易易互联网科技 陕西彩京云互联网科技有限公司 互联网金融金融科技
0