您的位置:首页 > 其它

41. First Missing Positive

2017-11-30 21:08 141 查看

41. First Missing Positive

题目描述: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.

题目大意:给定一个未排序的数组,找到第一个丢失的正整数。

思路:将每正数放到他正确的位置,第0个位置放置元素1,第一个位置放置元素2,依此类推,放置完毕之后,判断每个位置的元素,是否满足当前位置的元素为当前位置索引+1,如果不是,则返回当前位置应该返回的元素,即索引+1,如果遍历完毕,都符合适当位置放相应元素,则丢失的是最后一个元素,返回n+1。

代码

package Array;

/**
* @Author OovEver
* @Date 2017/11/30 20:52
*/
public class LeetCode41 {
public int firstMissingPositive(int[] nums) {
for(int i=0;i<nums.length;i++) {
//            判断当前位置的元素是否为应当放的元素,如位置0放1位置放2
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: