41. First Missing Positive

Given an unsorted integer array, find the first missing positive integer.

For example,
Given [1,2,0] return 3,
and [3,4,-1,1] return 2.

Your algorithm should run in O(n) time and uses constant space.

My Thought

题目大意

给定一个数组,找出第一个丢失的正数。
关键在于 O(n)的时间复杂度和常数的空间复杂度

算法

不能用一般的排序做了,可以借鉴 计数排序 的思想。
对于目标数组 \(A\) ,有长度 \(A.length\),如果 \(A\) 是一个完美不丢失的数组,即有:
\[A[\ ]=\{1,2,3,4,5,...,A.length\}\]
可以看到这个完美数组有一个性质
\[A[i] = i+1 \]
那么对于不完美的数组,我们可以遍历一次,交换元素位置,使该数组的全部元素尽可能在其完美的位置上。这样排完一遍,我们再遍历排序后的数组,如果找到不满足上述性质的位置,就是第一个缺失的正数。
这样交换只用到了一个整数空间,两遍遍历则是2*O(n)

伪代码

PROCEDURE findMissingPositive(int A[])for i = 0 to A.length-1 do:if A[i] <= A.length and A[i]>0 andA[A[i]-1]!=A[i]change(A[i],A[A[i]-1])for i=0 to A.length-1 do:if A[i]!= i+1return i+1return A.length+1

Code(C++ 3ms)

class Solution {
public:int temp;int firstMissingPositive(vector<int>& nums) {if(nums.size()==0)return 1;for(int i=0;i<nums.size();++i){if(nums[i]<=nums.size()&&nums[i]>0&&nums[nums[i]-1]!=nums[i]){temp = nums[nums[i]-1];nums[nums[i]-1]=nums[i];nums[i] = temp;i--;}}for(int i=0;i<nums.size();++i){if(nums[i]!=i+1)return i+1;}return nums.size()+1;}
};

转载于:https://www.cnblogs.com/HolyShine/p/6973385.html

LeetCode题解41.First Missing Positive相关推荐

  1. 【leetcode】41. First Missing Positive

    题目如下: 解题思路:这题看起来和[leetcode]448. Find All Numbers Disappeared in an Array很相似,但是有几点不同:一是本题的输入存在负数,二是没有 ...

  2. 【排序+难题】LeetCode 41. First Missing Positive

    LeetCode 41. First Missing Positive 本博客转载自:[1]http://www.cnblogs.com/grandyang/p/4395963.html [2]htt ...

  3. [LeetCode]41.First Missing Positive

    [题目] Given an unsorted integer array, find the first missing positive integer. For example, Given [1 ...

  4. leetcode 41. First Missing Positive 1

    题目要求 Given an unsorted integer array, find the first missing positive integer.For example, Given [1, ...

  5. leetCode 41.First Missing Positive (第一个丢失的正数) 解题思路和方法

    First Missing Positive Given an unsorted integer array, find the first missing positive integer. For ...

  6. 41. First Missing Positive

    题目: Given an unsorted integer array, find the first missing positive integer. For example, Given [1, ...

  7. [leetcode]41. First Missing Positive

    题目地址 https://leetcode.com/problems/first-missing-positive/ 题目大意 一个整数数组,里面数字是无序的,在O(n)的时间复杂度,O(1)的空间复 ...

  8. leetcode 41. First Missing Positive

    https://www.cnblogs.com/grandyang/p/4395963.html https://www.jianshu.com/p/cf82ce91dc3d 错误解法1: [1,1] ...

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

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

最新文章

  1. 用了3年CAT,这次我想选择SkyWalking,老板反手就是一个赞!
  2. 计算机莫名其妙的游戏网页弹出,自动弹出游戏网页怎么办 自动弹出游戏网页解决方法【详解】...
  3. Linux CP文件夹略过目录的解决
  4. 程序员羽化之路--假如需要一百万个对象
  5. 互联网环境下分布式事务处理系统现状与趋势
  6. 作业 输出演练 1751
  7. Git命令行本地库基本操作流程
  8. 本科计算机专业学物理力学吗,力学专业
  9. 【elasticsearch】bulk api奇特的json格式的原因
  10. 介绍一下linux下的samba服务
  11. python中的加减乘除符号属于什么_python中的加减乘除小知识
  12. 刷课在线支付系统(新手入门编写,大佬勿喷)
  13. 多元统计分析基于r课后答案_(完整版)多元统计分析课后练习答案
  14. 网页分享接口代码格式
  15. jQuery fadeIn淡入效果
  16. 搭建京东客京推推CMS2.0导购网站部署教程,新手教程带视频
  17. 计算机 显卡 淘汰,早该淘汰的VGA模拟接口:新显卡不再支持
  18. a链接跳转到新的窗口
  19. 48 《自私的基因》 -豆瓣评分8.6
  20. 中国无乳糖食物行业市场供需与战略研究报告

热门文章

  1. 【python基础】window下python安装及配置环境变量的方法教程
  2. Python笔记-flask执行后台程序(非web应用)
  3. 使用paintEvent()对窗口进行OpenGL2D绘图
  4. Qt官方文档阅读笔记-QStyledItemDelegate Class描述
  5. 数据结构-线性相关代码
  6. linux下网络编程设置非阻塞,UNIX网络编程 非阻塞connect的实现
  7. oracle 结果缓存,Result cache结果缓存
  8. mysql sql select for update_mysql SELECT FOR UPDATE语句使用示例
  9. python实现8大排序算法
  10. 原码,反码,补码,移码四种机器码的表示方法及0的四种表示方法