个人记录-LeetCode 41. First Missing Positive
来源:互联网 发布:python 二维数组赋值 编辑:程序博客网 时间:2024/05/18 01:28
问题:
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.
代码示例:
这个问题最直观的方法是对数组进行重新排序,然后找到需要的数。
假设数组长度为n,那么第一个缺失的正数,其取值范围为1~n+1。
我们可以按照n[0] = 1, n[1] = 2…..这种方式重新排列数组,
然后找到n[i] != i+1的数,那么缺失的正数就是n+1。
public class Solution { public int firstMissingPositive(int[] nums) { for (int i = 0; i < nums.length; ) { //对于小于0和大于n的数不用处理,只用确保0~n-1可以放置对应的1~n即可 //当nums[i]应该放置在nums[i]-1的位置,因此当不等时,就需要进行交换 //交换后,i并不增加,因为当前位置的新数也不一定满足要求 //尽管同一个位置可能需要交换多次,例如2,3,4,5,6,1,在1个位置将发生多次交换 //但平摊到每个数上,最多交换一次,因此还是O(n)的 if (nums[i] > 0 && nums[i] < nums.length + 1 && nums[i] != nums[nums[i] - 1]) { swap(nums, i, nums[i] - 1); } else { ++i; } } int i = 0; //找到num[i] != i + 1的位置,i+1就是缺失的正数 for (; i < nums.length; ++i) { if (nums[i] != i + 1) break; } return i + 1; } private static void swap(int[] nums, int fst, int sec) { int temp = nums[fst]; nums[fst] = nums[sec]; nums[sec] = temp; }}
0 0
- 个人记录-LeetCode 41. First Missing Positive
- [LeetCode]41.First Missing Positive
- LeetCode --- 41. First Missing Positive
- LeetCode 41.First Missing Positive
- [Leetcode] 41. First Missing Positive
- [leetcode] 41.First Missing Positive
- leetCode 41. First Missing Positive
- LeetCode 41. First Missing Positive
- leetcode 41. First Missing Positive
- Leetcode 41. First Missing Positive
- LeetCode 41. First Missing Positive
- [leetcode]41. First Missing Positive
- LeetCode-41.First Missing Positive
- leetcode 41. First Missing Positive
- [LeetCode] 41. First Missing Positive
- [LeetCode]--41. First Missing Positive
- leetcode 41. First Missing Positive
- leetcode 41.First Missing Positive
- 数据结构 排序算法之选择排序算法
- OO理解对象
- Unity中dragonbones动画不显示的问题
- Android 支付宝支付详解与demo
- jquery的prop()方法
- 个人记录-LeetCode 41. First Missing Positive
- bzoj 4720: [Noip2016]换教室 期望dp+最短路
- LInux下动态链接库的生成
- IOC和DI
- Error:Execution failed for task ':app:compileDebugJavaWithJavac'. > Compilat
- js-获取JSON数组的长度
- spring声明式事务 同一类内方法调用事务失效
- PHP opcache开启
- linux下线程通信相关函数