Java [Leetcode 41]First Missing Positive
2015-12-06 00:10
309 查看
题目描述:
Given an unsorted integer array, find the first missing positive integer.
For example,
Given
and
Your algorithm should run in O(n) time and uses constant space.
解题思路:
参考/article/2365650.html
虽然不能再另外开辟非常数级的额外空间,但是可以在输入数组上就地进行swap操作。
思路:交换数组元素,使得数组中第i位存放数值(i+1),过程中注意边界条件以及重复数字的处理。最后遍历数组,寻找第一个不符合此要求的元素,返回其下标。整个过程需要遍历两次数组,复杂度为O(n)。
代码如下:
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.
解题思路:
参考/article/2365650.html
虽然不能再另外开辟非常数级的额外空间,但是可以在输入数组上就地进行swap操作。
思路:交换数组元素,使得数组中第i位存放数值(i+1),过程中注意边界条件以及重复数字的处理。最后遍历数组,寻找第一个不符合此要求的元素,返回其下标。整个过程需要遍历两次数组,复杂度为O(n)。
代码如下:
public class Solution { public int firstMissingPositive(int[] nums) { int length; int temp; if (nums == null || (length = nums.length) == 0) return 1; for (int i = 0; i < length; i++) { if (nums[i] == i + 1) continue; else { while (nums[i] > 0 && nums[i] <= length && nums[i] != nums[nums[i] - 1]) { temp = nums[i]; nums[i] = nums[nums[i] - 1]; nums[temp - 1] = temp; } } } for (int i = 0; i < length; i++) { if (nums[i] != i + 1) return i + 1; } return length + 1; } }
相关文章推荐
- The road from my heart to java chapter4
- JavaEE: JSP与Servlet
- Java并发编程资料整理,持续更新
- eclipse导出web项目而引起获取class路径不是期待值!
- spring Bean实例生命周期行为
- 理解CacheLine与写出更好的JAVA
- java实现线性顺序表
- java实现线性单链表
- java中toString()方法
- java学习第五天
- java学习第六天
- java中 this 和 super的区别
- 强制关闭myeclipse出现的问题
- HDU 5593 ZYB's Tree(树形DP 好题(java))
- java注册用户信息保存到txt中。
- Java Annotation 及几个常用开源项目注解原理简析
- Java锁(一)之内存模型
- Struts2如何封装请求参数
- Struts1 标签库 说明
- 在Java中生成专业的公文文档