leetcode_First Missing Positive

来源:互联网 发布:php权限管理系统 编辑:程序博客网 时间:2024/06/05 08:05

描述:

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.

思路:

做过find the duplicate number再来解决该问题就很简单了,虽然上述方法并不适合上一题,但是挺适合这一题的即将数组nums[i]中的数值都存储到index为nums[i]-1的位置上,不在位置为index处的值则为(index+1),返回即可。

代码:

public int firstMissingPositive(int[] nums) {if(nums==null||nums.length==0)return 1;        int temp = 0;int i = 0,index=0;while (i < nums.length) {if (i + 1 != nums[i]) {index=nums[i]-1;if(index<0||index>=nums.length){    i++;    continue;}if(nums[index]!=nums[i])swap(nums, i, index);else {i++;}//i = nums[i] - 1;} elsei++;}for (i = 0; i < nums.length; i++) {if (i + 1 != nums[i]) {temp = i+1;break;}}if(i==nums.length)return nums[nums.length-1]+1;return temp;}public void swap(int[] nums, int index1, int index2) {int temp = nums[index1];nums[index1] = nums[index2];nums[index2] = temp;}


0 0
原创粉丝点击