First Missing Positive
2016-02-22 13:55
281 查看
Given an unsorted integer array, find the first missing positive integer.
Have you met this question in a real interview? Yes
Example
Given [1,2,0] return 3,
and [3,4,-1,1] return 2.
Challenge
Your algorithm should run in O(n) time and uses constant space.
Have you met this question in a real interview? Yes
Example
Given [1,2,0] return 3,
and [3,4,-1,1] return 2.
Challenge
Your algorithm should run in O(n) time and uses constant space.
public class Solution { public int firstMissingPositive(int[] A) { int i = 0; while (i < A.length) { /*思路:交换数组元素,使得数组中第i位存放数值(i+1)。最后遍历数组,寻找第一个不符合此要求的元素,返回其下标。整个过程需要遍历两次数组,复杂度为O(n)。 其实交换的条件就是3个: 1: A[i] is in the range; 2: A[i] > 0. 3: The target is different; (如果不判断这个,会造成死循环,因为你交换过来一个一样的值) */ if (A[i] != i + 1 && A[i] >= 1 && A[i] <= A.length && A[A[i] - 1] != A[i]) { int tmp = A[A[i] - 1]; A[A[i] - 1] = A[i]; A[i] = tmp; //交换 } else i++; } for (i = 0; i < A.length; i++) { if (A[i] != i + 1) return i + 1; } return A.length + 1; } }
相关文章推荐
- EasyMock的使用
- NPN和PNP三极管做开关使用时的工作原理
- YUV422 YUV420 Planar \ Semi-Planar \ Interleaved格式详解
- CABasicAnimation Demo
- 单片机系列知识5--并口(2)
- TCP/IP网络协议的通俗理解,SOCKET,HTTP,SOAP
- 【monkeyrunner】monkeyrunner 的的方法介绍
- win10+vs2013+Qt5.4 安装方法
- 数据结构绪论
- maven中设置代理服务器
- iOS 原生CoreImage人脸识别
- Struts2中的拦截器与过滤器学习
- va_start和va_end的使用及原理
- SurfaceOutput
- 自建maven 私服
- viewpager实现简单的轮播效果
- 2016:如何选择 Linux 发行版
- CAKeyframeAnimation Demo
- 使AD域控服务器Administrator的密码永不过期方法。
- maven3常用命令、java项目搭建、web项目搭建详细图解