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

示例 1:

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

解题思路:

  1. 判断数组中是否存在1,如果没有1则直接返回1,结束;
  2. 如果数组长度为1,同时数组中存在1,则直接返回2,结束;
  3. 将数组中小于1或者大于数组长度length的数变为1;
  4. 根据nums[i]的值将nums[nums[i]]对应的数变为负数,表示数组中存在该正数;因为nums[i]的值可能超过数组边界,因此当nums[i]=length时,使nums[0]变为负数;
  5. 遍历数组,当数组中某一个位置的值为正数,表示数组中缺少该位置值的整数,返回该位置的index,结束;注意nums[0]表示的是数组中是否存在length这个正数;
  6. 如果数组全为负数,则返回length+1,结束;
# Python3
class Solution:def firstMissingPositive(self, nums: List[int]) -> int:if not nums: # 如果数组为空,返回1return 1length = len(nums)  # 计算数组的长度if 1 not in nums:  # 如果1不在数组中,返回1return 1if length == 1:  # 如果1在数组中,同时数组长度为1,则直接返回2return 2for i in range(length):  # 数组中存在1,同时将小于1或者大于数组长度的值变为1if nums[i]<=0 or nums[i]>length:nums[i] = 1# 将nums[i]对应的nums[nums[i]]变为负数,表示nums中存在nums[i]整数# 因为nums[i]可能等于length,这超出了数组的范围,因此当nums[i]==length时,令nums[0]变为负数,nums[0]为负数表示数组nums中存在length这个正数for i in range(length):temp = abs(nums[i])if temp == length:nums[0] = -abs(nums[0])else:  nums[temp] = -abs(nums[temp])# 遍历数组,从1开始,如果存在nums[i]大于0,则直接返回1for i in range(1,length):if nums[i] > 0:return i# 判断nums[0]是否大于零,因为nums[0]为负数表示数组中存在正数length# 当nums[0]大于零时,则返回lengthif nums[0]>0:return length# 如果数组中前length个整数都存在,则返回length+1这个正数return length+1
class Solution {public:int firstMissingPositive(vector<int>& nums) {if(nums.empty())return 1;int length = nums.size();if(std::find(nums.begin(),nums.end(),1)==nums.end())return 1;if(length==1)return 2;for(int i=0;i<length;++i){if(nums[i]<=0 || nums[i]>length)nums[i] = 1;}for(int i=0;i<length;++i){int temp = abs(nums[i]);if(temp<length)nums[temp] = -(abs(nums[temp]));elsenums[0] = -(abs(nums[0]));}for(int i=1;i<length;++i){if(nums[i]>0)return i;}if(nums[0]>0)return length;return length+1;}
};

leetcode —— 41. 缺失的第一个正数相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 41,缺失的第一个正数

    解题思路 一,暴力肯定不可取,时间要O(n^2) 二,sort一遍也不行,空间要O(n) 三,时间要O(n),空间常数,只能找方法. 可以想到,如果每个数字刚好对应那个 空间地址(nums[i]==i ...

最新文章

  1. python读写csv确定编码格式_Python使用utf8编码读写csv文件
  2. golang正则表达式
  3. 深入浅出UML类图(四)
  4. dll动态库调用约定
  5. 嵌入式linux通过DHCP自动获取IP地址实现
  6. python encode和decode函数说明
  7. 是的,又一次立FLAG了
  8. Kafka从上手到实践 - 实践真知:搭建Kafka相关的UI工具 | 凌云时刻
  9. 南阳理工计算机与科学技术,南阳理工学院计算机与信息工程学院
  10. 通俗地理解贝叶斯公式(定理)
  11. 写给后端程序员的前端开发流程与正确姿势.
  12. 好心情“沉浸式VR静心疗愈—荷塘月色”第二期企业沙龙活动圆满收官
  13. 2021年井冈山中学高考成绩查询入口,【高考成绩】2019年高考成绩揭晓,井冈山中学取得好成绩!...
  14. 深入Java虚拟机(五)垃圾收集
  15. Waymo无人车设立中国全资子公司,取名慧摩,与谷歌上海同楼办公
  16. 做一个广告业务后台需要几天,5天吗?不,用PhalApi开源框架,1天就能做好
  17. 直播系统源码搭建、手机直播源码APP平台开发制作
  18. 《房债》书中的精髓:现代金融系统让全世界的人同处一艘经济大船上,一些人搞坏了船,所有的人都跟着遭殃。
  19. Ubuntu 16.04下安装配置Trac项目管理工具
  20. python模糊搜索_在Python中使用Whoosh进行模糊搜索

热门文章

  1. slf4j 与log4j 日志管理
  2. 面试官系统精讲Java源码及大厂真题 - 24 举一反三:队列在 Java 其它源码中的应用
  3. Redis面试 - redis 都有哪些数据类型?
  4. UC神马数据采集api
  5. 【Python】编写一个类,求圆的周长和面积
  6. “SqlNullValueException: Data is Null. This method or property cannot be called on Null values.”的解决方案
  7. C#LeetCode刷题之#686-重复叠加字符串匹配(Repeated String Match)
  8. C#LeetCode刷题-双指针
  9. mysql view在测试过程的应用
  10. chrome 全屏截图_如何在不带扩展功能的Chrome中拍摄全屏截图