First Missing Positive

news/2025/3/22 0:35:08

每日算法——leetcode系列


问题 First Missing Positive

Difficulty: Hard

Given an unsorted integer array, find the first missing positive integer.

For example,
Given [1,2,0] return 3,
and [3,4,-1,1] return 2.

Your algorithm should run in O(n) time and uses constant space.

class Solution {
public:int firstMissingPositive(vector<int>& nums) {}
};

翻译

第一个缺失的正整数

难度系数:困难

给定一个无序数组,找出第一个缺失的正整数。
例如:
给定[1,2,0] 返回 3,
[3,4,-1,1] 返回 2
算法的时间复杂度为O(n), 空间复杂度为常数。

思路

此题一看想排序,如果有序后,找第一个缺失的正整数,那就从1开始查,如果数组中查到有1,那就查2,如此查到最后看待查的数就是要的结果,要查的数可以用索引来表示。
排序算法时间复杂度为O(n)的是桶排序,这里关键是要找到桶的个数,由于只查正整数,假定数组的长序为n,那n-1个桶放正整数就够了,遍历数组,小于1和大于n-1的数都不用管,这样就可以把数组中1到n-1的数剔出放在相应位置的桶中,再查缺失元素,但这种方案空间复杂度为O(n),不为常数。
下面分析排序:
假定: 桶k装的数为m

  • k == m 不变

  • k != m 则数m应该装到第m个桶,则把桶m的数和桶k的数交换,直接交换过来的数为m就不用交换
    这里可能会给人感觉时间复杂度不为O(n)了,由于每一次交换后都会把一个数放到正确的桶上,所以平均下来最后还是O(n)

代码

class Solution {
public:int firstMissingPositive(vector<int>& nums) {// sortint n = static_cast<int>(nums.size());int num;for(int i = 0; i < n; ++i) {num = nums[i];while (num > 0 && num < n && nums[num-1] != num) {swap(nums[i], nums[num-1]);num = nums[i];}}// findint wantToFind = 1;for (auto &item : nums){if (item == wantToFind){++wantToFind;}}return wantToFind;}
};

唠叨
教初中娃儿编程真是一个难事,能力不足,想要培养一个孩子的编程兴趣还完全做不到


https://dhexx.cn/news/show-4375334.html

相关文章

luogu1514 引水入城

http://www.elijahqi.win/archives/1558 题目描述 在一个遥远的国度&#xff0c;一侧是风景秀美的湖泊&#xff0c;另一侧则是漫无边际的沙漠。该国的行政区划十分特殊&#xff0c;刚好构成一个N 行M 列的矩形&#xff0c;如上图所示&#xff0c;其中每个格子都代表一座城市&…

pta 习题集 5-5 最长连续递增子序列 (dp)

给定一个顺序存储的线性表&#xff0c;请设计一个算法查找该线性表中最长的连续递增子序列。例如&#xff0c;(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。 输入格式: 输入第1行给出正整数nn&#xff08;≤105≤10​5​​&#xff09;&#xff1b;第2行给出nn个整数&…

今天开博了

今天开博了&#xff0c;顺便熟悉熟悉博客园程序的功能转载于:https://www.cnblogs.com/mahuahua/archive/2008/08/21/1272817.html

mssql sql高效关联子查询的update 批量更新

/* 使用带关联子查询的Update更新 --1.创建测试表 create TABLE Table1 ( a varchar(10), b varchar(10), c varchar(10), CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED ( a ASC ) ) ON [PRIMARY] create TABLE Table2 ( …

bzoj 5314 [Jsoi2018]潜入行动

http://www.elijahqi.win/archives/3640 Description 外星人又双叒叕要攻打地球了&#xff0c;外星母舰已经向地球航行&#xff01;这一次&#xff0c;JYY已经联系好了黄金舰队&#xff0c;打算联合所有JSO Ier抵御外星人的进攻。在黄金舰队就位之前&#xff0c;JYY打算事先…

pta 习题集 5-17九宫格输入法

假设有九宫格输入法键盘布局如下&#xff1a; [ 1,.?! ] [ 2ABC ] [ 3DEF ][ 4GHI ] [ 5JKL ] [ 6MNO ][ 7PQRS ] [ 8TUV ] [ 9WXYZ ][ 0空 ]注意&#xff1a;中括号[ ]仅为了表示键盘的分隔&#xff0c;不是输入字符。每个中括号中&#xff0c;位于首位的数字字符即是键盘…

TCP/IP 故障排除

偶重点推荐下载和要仔细看看的文章&#xff01;在二十世纪九十年代&#xff0c;Microsoft 通过引入完全重写的 TCP/IP 堆栈&#xff0c;开始显著提高 Microsoft 网络的可伸缩性。新的 TPC/IP 堆栈的设计目的是为了采用性能和易管理性方面的很多进展&#xff0c;它是业界标准 TC…

分享一个大型进销存供应链项目(多层架构、分布式WCF多服务器部署、微软企业库架构)...

项目源码下载&#xff1a; WWW.DI81.COM 分享一个大型进销存供应链项目(多层架构、分布式WCF多服务器部署、微软企业库架构) 这是一个比较大型的项目&#xff0c;准备开源了。支持N家门店同时操作。远程WCF企业库5.0实现。 这块应该算是库存模块中的核心模块了&#xff0c;因为…

Access与SQL Server对应的函数

Access对应SQL Server的SubString函数为mid Access对应SQL Server的patindex函数为instr

pta 习题集5-19 列车厢调度

1 <--移动方向/3 \2 -->移动方向大家或许在某些数据结构教材上见到过“列车厢调度问题”&#xff08;当然没见过也不要紧&#xff09;。今天&#xff0c;我们就来实际操作一下列车厢的调度。对照上方的ASCII字符图&#xff0c;问题描述如下&#xff1a; 有三条…