Leetcode220: First Missing Positive
2016-01-07 16:44
323 查看
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.
要求常数空间和线性时间复杂度,那么排序和哈希表都不适用。
可以调整数组,使得第i个位置上的值为i+1,调整一次复杂度是O(n),然后再一次遍历O(n),找到第一个位置和值不对应的地方即是缺少的整数。
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,调整一次复杂度是O(n),然后再一次遍历O(n),找到第一个位置和值不对应的地方即是缺少的整数。
class Solution { public: int firstMissingPositive(vector<int>& nums) { int n = nums.size(); int i = 0; while(i<n) { if(nums[i]>0 && nums[i]<n && nums[i]!=i+1 && nums[i]!=nums[nums[i]-1]) { int temp = nums[i]; nums[i] = nums[temp-1]; nums[temp-1] = temp; } else { i++; } } for(int i = 0; i < n; i++) { if(nums[i]!=i+1) return i+1; } return n+1; } };
相关文章推荐
- AndroidStudio 开发遇到的问题
- 修改xcode生成app的名字
- linux下安装oracle11g,netca和dbca命令不能使用,报错command not found!
- 关于arraylist 与泛型的概念
- Core Data 多线程时多个context使用
- Baxter机器人---Hello_baster(二)
- 图解SQL的各种连接(Inner join,outer join,left join,right join)
- 弹性盒子布局flex, box-sizing: border-box
- 在Imac上安装nginx
- cstring转const char*
- <div>标签嵌套多层如何找准位置
- 一次简单的分析手机APK病毒木马
- SQL Server 2012 创建操作员
- mysql group by 用法解析(详细)
- 2016-1-7-Thingking in Java 读书笔记(三)--操作符
- 每天一个Linux之head命令
- qt tableview代理1
- 点击键盘的 next 按钮,在不同的 textField 之间换行
- hidden symbol ... is referenced by DSO 解决办法
- Android apk动态加载机制的研究