LeetCode:First Missing Positive
2016-06-15 21:43
288 查看
First Missing Positive
Total Accepted: 66680 TotalSubmissions: 277290 Difficulty: Hard
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.
Subscribe to see which companies asked this question
Hide Tags
Array
Hide Similar Problems
(M) Missing Number (H)
Find the Duplicate Number
思路:
将每个数放置到下标对应的位置。
如num=5,将它与nums[4]位置上的数交换;第二次遍历数组,第一个没与位置对应的数即为答案。
java code:
public class Solution { public int firstMissingPositive(int[] nums) { int n = nums.length; for(int i=0;i<n;i++) { while(0 < nums[i] && nums[i] <= n && nums[nums[i]-1] != nums[i]) swap(nums, nums[i]-1,i); } for(int i=0;i<n;i++) { if(nums[i] != i+1) return i+1; } return n+1; } // 自定义函数:交换 private void swap(int[] nums, int i, int j) { nums[i] ^= nums[j]; nums[j] ^= nums[i]; nums[i] ^= nums[j]; } }
相关文章推荐
- 指针学习1
- 并行程序计算相关概念
- 软件工程-课程总结
- 2个
- Web前端:HTML~CSS~JS
- Python 进阶学习笔记2
- Bundle savedInstanceState的作用
- WebSocket协议
- git删除远程分支
- 容器简介
- android编码规范小结
- Web前端:HTML~CSS~JS
- SQL Server 维护计划实现数据库备份(Step by Step)
- Serialize and Deserialize Binary Tree
- 类
- LintCode(85)在二叉查找树中插入节点
- 剑指offer面试题:替换空格(将字符串每个空格替换为%20)
- 作业九
- C#中的委托
- ORB特征原理(浅显易懂)