【LeetCode】41. First Missing Positive
来源:互联网 发布:淘宝微淘动态 编辑:程序博客网 时间:2024/06/16 07:41
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.
这道题的题目大意为找到第一个未出现的正数。比如题目中给出的例子[1,2,0]正数有1,2,第一个丢失的正数就是3;[3,4,-1,1]正数有1,3,4第一个丢失的正数就是2,所有返回2。这道题他要求只遍历一次并且使用常数的空间。我刚开始是这么做的:
public int firstMissingPositive(int[] nums) { if(nums.length == 0) return 1; List<Integer> temp = new ArrayList<Integer>(); for(int i=0;i<nums.length;i++){ temp.add(nums[i]); } for(int i=1;i<Integer.MAX_VALUE;i++){ if(!temp.contains(i)) return i; } return 0; }把他给定的数组放到List集合中,然后通过遍历所有正数,判断是否出现在List集合中,从而得出值。这样交上去是可以AC的,但是不知道有没有违反它要使用常数空间的约束。于是又想了另一种方法,将数组下标与值对应起来(交换使每个正数到齐对应位置nums[i]==i+1,1放在下标为0的位置,2放在下标为1的位置,以此类推),这样使每个正数归位,然后遍历一遍,第一个不满足这个条件的(nums[i]==i+1),就是结果了。代码如下:
//建立数组下标和对应值的关系 public int firstMissingPositive(int[] nums) { if(nums.length==0) return 1; for(int i=0;i<nums.length;i++){ if(nums[i]<nums.length&&nums[i]>0&&nums[i]!=nums[nums[i]-1]){ int temp = nums[nums[i]-1]; nums[nums[i]-1] = nums[i]; nums[i] = temp; i--; } } for(int i=0;i<nums.length;i++){ //System.out.println(nums[i]); if(nums[i]!=i+1) return i+1; } return nums.length+1; }
阅读全文
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
- jQuery事件绑定
- map/set/multi_map/multi_set/unorder_map/unorder_set总结
- jquery---组件高效的数字滚动特效
- css动画
- 使用Jadx反编译apk
- 【LeetCode】41. First Missing Positive
- Spring整合Dubbo对外提供服务
- POJ 1259 The Picnic 笔记
- 使用jquery.fullpage.js需要动态改变导航小圆点的样式
- could not reserve enough space for object heap
- 数据挖掘-层次聚类·单身狗问题分析
- u-boot代码分析
- angularjs实现一个应用小程序
- Head First Jsp&Servlet笔记01 入门