Leetcode--41. 缺失的第一个正数
初始化变量:获取数组的长度 处理每个元素:遍历数组,对于每个元素x,如果x是正数且在数组范围内,检查它是否应该出现在当前位置。如果不在,交换它和它应该出现的位置的值。 检查位置:再次遍历数组,检查每个位置i是否有i+1的值。如果发现缺失,返回这个值。 返回结果:如果所有位置都有正确的值,返回数组长度加1。
发布日期:2021-04-30 21:04:42
浏览次数:74
分类:精选文章
本文共 1081 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要找到一个未排序的整数数组中没有出现的最小的正整数。我们的算法需要在O(n)的时间复杂度内完成,并且只能使用常数级别的空间。
方法思路
我们可以通过以下步骤来解决这个问题:
遍历数组处理每个元素:对于每个元素,如果它是正数且在数组的范围内,我们尝试将它放到它应该出现的位置。具体来说,如果元素x应该出现在位置x-1,但当前位置不是x-1,我们交换这两个位置的值。
检查位置是否正确:在处理完所有元素后,遍历数组检查每个位置i是否有i+1的值。如果发现某个位置i没有i+1的值,那么i+1就是最小的缺失正整数。如果所有位置都有正确的值,那么最小的缺失正整数就是数组长度加1。
这种方法确保了每个数都被放到正确的位置,或者标记为缺失,从而在O(n)时间内找到最小的缺失正整数。
解决代码
class Solution { public int firstMissingPositive(int[] nums) { int n = nums.length; for (int i = 0; i < n; i++) { int x = nums[i]; if (x > 0 && x <= n) { if (x - 1 != i) { int temp = nums[x - 1]; nums[x - 1] = x; nums[i] = temp; } } } for (int i = 0; i < n; i++) { if (nums[i] != i + 1) { return i + 1; } } return n + 1; }} 代码解释
n。这种方法确保了在O(n)时间和常数级别空间内解决问题,适用于各种输入情况。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2026年06月14日 12时31分54秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php截取字符串,无乱码
2023-03-01
php手冊,php手冊之變量范圍
2023-03-01
PHP手机号码归属地查询API接口
2023-03-01
PHP执行耗时脚本实时输出内容
2023-03-01
PHP扩展安装
2023-03-01
PHP扩展数据库连接参数说明详解
2023-03-01
php把get参数放入数组_php怎么将数组转为url参数?
2023-03-01
PHP投票小程序
2023-03-01
php拆分数组不改变key值
2023-03-01
php接口返回数据 用echo 还是return?
2023-03-01
php接口返回状态,大家一般怎么规范接口返回内容
2023-03-01
php接收formdata上传的多个文件,使用formData()上传多个文件
2023-03-01
PHP操作csv文件导入+导出
2023-03-01
php操作mysql用select_php如何操作mysql获取select 结果
2023-03-01
PHP操作符与控制结构
2023-03-01
PHP支付宝SDK使用,电脑网页支付
2023-03-01
php支付宝手机网页支付类实例
2023-03-01
PHP改变数组key值的方法
2023-03-01
php教程之php空白页的原因及解决方法
2023-03-01
PHP数据库操作
2023-03-01