问题描述

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

示例 1:

输入:nums = [1,2,0]
输出:3

示例 2:

输入:nums = [3,4,-1,1]
输出:2

示例 3:

输入:nums = [7,8,9,11,12]
输出:1

提示:

0 <= nums.length <= 300
-231 <= nums[i] <= 231 - 1

解题思路:

若有时间复杂度和空间负责度的要求,则解题相当的困难,如果不做要求的话,本题可以将时间复杂度和空间复杂度降低到时间复杂度不超过O(nlogn),空间复杂度O(n).
我们首先将数组中的正整数都收集起来,然后对数组中的正整数排序(这里可以直接借助TreeSet集合)。
如果正整数数组中最前面的元素大于1,那么缺失的第一个正数为1
否则的话,我们就从1开始逐个尝试数组中是否存在从1开始递增的正整数,如果某个正整数缺失的话,就直接返回。如果一直找到数组的末尾都没有找到,就返回最后一个元素值加1。当然,这里还有一个重要的前提就是,保持正整数数组中无重复元素,我们可以借助set集合

代码实现:

class Solution {public int firstMissingPositive(int[] nums) {//使用TreeSet默认有序Set<Integer> set=new TreeSet<Integer>();//将数组中的正整数全部拷贝到set集合中for(int i=0;i<nums.length;i++){if(nums[i]>0){set.add(nums[i]);}}int size=set.size();//如果没有正整数,就返回1if(size==0){return 1;}int arr[]=new int[size];int j=0;for(Integer x:set){arr[j++]=x;}//如果最小正整数都大于1,那么缺失的第一个正数就是1if(arr[0]>1){return 1;}j=1;        //测试每个正整数是否在正整数数组中出现int k=0;        //用来标记正整数数组的下标while(k<size){//如果出现了, 两者都加加if(arr[k]==j){k++;j++;}else{//如果没有出现,直接返回该数即可return j;}}//如果一直都没有找到,就返回最大的值加1return arr[size-1]+1;}
}

leetcode题解41-缺失的第一个正数原来如此简单相关推荐

  1. Leetcode 40组合总数(回溯)Ⅱ41缺失的第一个正数42接雨水

    维护公众号:bigsai ,回复进群加入打卡,回复bigsai分享一些学习资源! 上周第一次 LeetCode 36有效的数独&37解数独(八皇后问题) 上周第二次 LeetCode 38外观 ...

  2. Leetcode算法Java全解答--41. 缺失的第一个正数

    Leetcode算法Java全解答–41. 缺失的第一个正数 文章目录 Leetcode算法Java全解答--41. 缺失的第一个正数 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 ...

  3. Java实现 LeetCode 41 缺失的第一个正数

    41. 缺失的第一个正数 给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: ...

  4. 41. 缺失的第一个正数 golang

    41. 缺失的第一个正数 给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3 ...

  5. 努力前端【LeetCode-10】448. 找到所有数组中消失的数字 442. 数组中重复的数据(中等) 41. 缺失的第一个正数(困难) [鸽笼原理,数组,Map,类似No.645]

    文章目录 题目描述-448 一.哈希Map 二.空间复杂度的优化--鸽笼原理 三.总结 题目描述-442 一.还是hashMap 二.继续鸽笼原理 题目描述-41 一.基础方案 二.数组模拟Map 题 ...

  6. 【LeetCode笔记】41. 缺失的第一个正数(Java、哈希)

    文章目录 题目描述 思路 & 代码 题目描述 难点在于时空复杂度的要求 想出最优方法,需要认真理解题目. 思路 & 代码 做法:建立一个逻辑上的哈希表,令 nums[i] = i + ...

  7. LeetCode 41. 缺失的第一个正数

    文章目录 1. 题目信息 2. 思路 3. 代码 1. 题目信息 给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1:输入: [1,2,0] 输出: 3 示例 2:输入: [3,4, ...

  8. leetcode —— 41. 缺失的第一个正数

    给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3 解题思路: 判断数组中是否存在1,如果没有1则直接返回1,结束: 如果数组长度为1,同时 ...

  9. LeetCode 41. 缺失的第一个正数 First Missing Positive

    给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: [7,8,9,11 ...

最新文章

  1. ORA-12519: TNS: 没有找到适用的服务处理
  2. Android面试题详细整理系列(三)
  3. VBA 网页提取特定内容 - 网抓实践总结
  4. 证书:数字签名和验签加密和解密
  5. 用户收货地址h5页面_如何实现H5可视化编辑器的实时预览和真机扫码预览功能?...
  6. Swift: Swift中Selector的变化
  7. MyBatis常见问题和解决方法
  8. 管理c语言源代码,c语言源代码---------------个人图书管理系统
  9. 黑苹果卡在苹果logo_黑苹果的历史
  10. OPNET网络仿真实验
  11. 计算机网络·各应用层协议对应的传输层协议及端口号
  12. 修改html颜色代码,JavaScript实现更改网页背景与字体颜色的方法
  13. 镜头MTF值的基本原理和解读
  14. 房屋租赁合同可不可以用笔修改
  15. 双卡 一卡通话 卡2丢网 ---注册状态 VOICE_REGISTRATION_STATE
  16. 流量主头像组合微信小程序源码下载支持多种分类并支持姓氏头像制作生成
  17. 网页访问localhost出现用户名和密码登录弹窗
  18. 启动redis失败 Could not create server TCP listening socket 127.0.0.1:6379: bind: 操作成功
  19. 审查元素html表格后缀,审查元素
  20. adb 删除文件时提示Read-only file system问题【not in /proc/mounts】

热门文章

  1. 暴露年龄系列!这些手机系统 你用过几个?
  2. 拳王虚拟项目公社:自动化的虚拟资源产品,唱歌教程赚地盆满钵满
  3. ORTP协议栈【ZT】
  4. 自动化测试之Appium模拟机测试
  5. flash player 11 相关资源
  6. 贴图问题,opengl,linux,windows,消除锯齿,摩尔纹,yuv 还是 rgb
  7. php与ie通信,php 获取用户IP与IE信息程序
  8. gcc2.95.3安装过程
  9. u-boot移植随笔:u-boot2010.09移植到8MB Nor Flash的S3C2440,第一步搞定(补记)
  10. kij是不是c语言语句,C语言考试题库及答案分析(总35页).doc