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; }}

上一篇 LeetCode面试题:反转链表 II
下一篇 【逗号你真的懂吗?】C++与JAVA中逗号的区别

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题