LeetCode每日一题,41.First Missing Positive
先看题目描述
大意就是给定一个没排序的数组,返回最小的缺失的正数
算法和思路
基本思路就是先对数组排序,然后就很好做了,当最小的数字大于 1 时,直接返回 1,当最大的数字小于等于 0 时,也直接返回 1,然后遍历排序后的 nums 数组,当 nums[i - 1] > 0 时,比较 nums[i - 1] 与 nums[i],若 nums[i] 不等于 nums[i - 1] + 1,返回 nums [i - 1] + 1,当最小的正数大于 1 时,返回 1,若 nums 数组中的正数均连续,就返回最后一个正数 + 1
1 | import java.util.*; |
后来看了题解发现时间复杂度不符合要求,因为前面有个对数组排序的过程,看题解才知道可以原地哈希
1 | public class Solution { |