您的位置:首页 > 编程语言 > Java开发

LeetCode:First Missing Positive

2017-03-26 17:36 513 查看
推荐参照:Leetcode题目难度等级及面试频率总结

题目描述:

  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.

思路:

  注意题目要求,时间复杂度O(n),空间复杂度O(1)。

  把正数n放在第n-1个位置上,这样从第一个位置开始遍历,如果位置上的数不等于位置号,那么就是第一个缺失的正数。

public class Solution {
public int firstMissingPositive(int[] nums) {
//把小于等于nums.length的正数nums[i]放到第nums[i]-1个位置上
for(int i = 0;i < nums.length;i++){
while(nums[i] > 0 && nums[i] <= nums.length && nums[nums[i]-1] != nums[i]){
int temp = nums[nums[i]-1];
nums[nums[i]-1] = nums[i];
nums[i] = temp;
}
}
for(int i = 0; i < nums.length;i++){
if(nums[i] != i+1)
return i+1;
}
return nums.length + 1;
}
}


Any comments greatly appreciated.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode java