First Missing Positive
程序员文章站
2022-05-24 12:48:42
...
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.
用到了桶排序,我们让第i个位置放值为i + 1的元素。当nums[i]不等于i + 1时,就让nums[nums[i] - 1]] = nums[i], 这样nums[nums[i] - 1]的位置肯定符合nums[i] = i + 1。然后在遍历一遍数组,如果遇到nums[i] 不等于 i + 1时就返回i+ 1,这个数字就是第一个missing的正数。代码如下:
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.
用到了桶排序,我们让第i个位置放值为i + 1的元素。当nums[i]不等于i + 1时,就让nums[nums[i] - 1]] = nums[i], 这样nums[nums[i] - 1]的位置肯定符合nums[i] = i + 1。然后在遍历一遍数组,如果遇到nums[i] 不等于 i + 1时就返回i+ 1,这个数字就是第一个missing的正数。代码如下:
public class Solution { public int firstMissingPositive(int[] nums) { if(nums == null) return 0; for(int i = 0; i < nums.length; i++) { while(nums[i] - 1 != i) { if(nums[i] <= 0 || nums[i] >= nums.length || nums[nums[i] - 1] == nums[i]) break; int tem = nums[nums[i] - 1]; nums[nums[i] - 1] = nums[i]; nums[i] = tem; } } for(int i = 0; i < nums.length; i++) { if(nums[i] != i + 1) return i + 1; } return nums.length + 1; } }
上一篇: mysql的比较运算_MySQL
下一篇: PHP防止跨域提交表单_php实例
推荐阅读
-
笔记本开机出现missing operating system该怎么办?
-
SqlServer2012中First_Value函数简单分析
-
head first java怎么样(java从入门到精通)
-
Mac python matplotlib Glyph xxxxx missing from current font的解决方案
-
SQL语句实现查询并自动创建Missing Index
-
微博营销看官方战略:Social First
-
jQuery中:first选择器用法实例教程
-
head first java怎么样(java从入门到精通)
-
[JVM 相关] Java 新型垃圾回收器(Garbage First,G1)
-
Entity Framework Code First属性映射约定