leetcode41 缺失的第一个正数

举报
兔老大 发表于 2021/04/30 03:47:45 2021/04/30
【摘要】 给定一个未排序的整数数组,找出其中没有出现的最小的正整数。 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: [7,8,9,11,12] 输出: 1 说明: 你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。 思路:把数字放到该放的地方。nums[i]...

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

示例 1:

输入: [1,2,0]
输出: 3
示例 2:

输入: [3,4,-1,1]
输出: 2
示例 3:

输入: [7,8,9,11,12]
输出: 1
说明:

你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。

思路:把数字放到该放的地方。nums[i]=i+1

然后检查哪个数不在即可。


  
  1. class Solution {
  2. public int firstMissingPositive(int[] nums) {
  3. if(nums == null || nums.length == 0)return 1;
  4. int len = nums.length;
  5. for (int i = 0; i < len ; i++)
  6. while (nums[i] >0 &&
  7. nums[i] <= len &&
  8. nums[i]!=nums[nums[i]-1])
  9. swap(nums,i,nums[i]-1);
  10. int i = 0;
  11. while(i<len && nums[i] == i+1)i++;
  12. return i+1;
  13. }
  14. private void swap(int[] nums,int i, int j){
  15. int tmp = nums[i];
  16. nums[i] = nums[j];
  17. nums[j] = tmp;
  18. }
  19. }

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/103446358

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。