首页 > 图灵资讯 > 技术篇>正文
LeetCode程序员面试金典:缺失的第一个正数
2023-05-04 10:32:28
题目:
给你一个未排序的整数数组nums,请找出没有出现的最小正整数。
请实现时间复杂度O(n)并且只使用常数级额外空间的解决方案。
示例 1:输入:nums = [1,2,0]输出:3
示例 2: 输入:nums = [3,4,-1,1
示例 3: 输入:nums = 输出:12:7,8,9,11
代码实现: class Solution { public int firstMissingPositive(int[] nums) { int n = nums.length; for (int i = 0; i < n; ++i) { if (nums[i] <= 0) { nums[i] = n + 1; } } for (int i = 0; i < n; ++i) { int num = Math.abs(nums[i]); if (num <= n) { nums[num - 1] = -Math.abs(nums[num - 1]); } } for (int i = 0; i < n; ++i) { if (nums[i] > 0) { return i + 1; } } return n + 1; }}