LeetCode热题100之缺失的第一个正数

题目:

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。

请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

本题思路:

1.数组长度为n的数组,缺失的数只能是在1,n+1。第一次遍历数组。使用置换的思想,把1,n的数值找到,放到下标i-1的位置。

2.第二次遍历数组,找到i下标上不等于i+1的数,就是第一个缺失的正数i+1。如果遍历完成之后没有找到,那缺失的数就是n+1。

java 复制代码
class Solution {
    public int firstMissingPositive(int[] nums) {
        int n = nums.length;
        for(int i = 0; i < n; ++i){
            while(nums[i] > 0 && nums[i] <= n&& nums[nums[i]-1] != nums[i]){
                int temp = nums[nums[i] - 1];
                nums[nums[i] - 1] = nums[i];
                nums[i] = temp;
            }
        }
        for(int i = 0;i < n; ++i){
            if(nums[i] != i+1){
                return i+1;
            }
        }
        return n+1;
    }
}
相关推荐
不会就选b5 小时前
算法日常・每日刷题--<贪心>14
算法
mmmmath_38 小时前
LeetCode.541.反转字符串II
数据结构·算法·leetcode
Navigator_Z8 小时前
LeetCode //MySQL - 1251. Average Selling Price
c语言·算法·leetcode
醇氧9 小时前
MySQL 8.0 系统表损坏与引擎转换故障排查实战
数据结构·算法
大熊背10 小时前
《Color constancy by characterization of illumination chromaticity》之色度色域最大化算法(二)
算法·白平衡·色度·色温
钓鱼的肝10 小时前
梳理(1-5)
c++·经验分享·笔记·算法·青少年编程
参.商.10 小时前
【Day 53】76. 最小覆盖子串
leetcode·golang
HZZD_HZZD10 小时前
CSDN_批发市场水电漏损归因算法LAM的原理与落地
嵌入式硬件·物联网·算法
shirsl12 小时前
算法 Day 5 树 / 二叉树 + DFS
数据结构·python·算法