(Java)LeetCode-41. First Missing Positive
来源:互联网 发布:万游网络武汉 编辑:程序博客网 时间:2024/06/11 18:56
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)的时间复杂度,只能常数次遍历数组,所以就是将每个数n放到数组中序号为(n-1)的位置上,其中负数和大于数组长度的数不用管,没有他们的位置。重复的数也只放一次就好了,这样再遍历一遍之后,再从头开始遍历数组,当哪个位置上的数不是希望的,则该位置希望的数就是缺少的第一个正整数。如果全都是希望的数,那么所缺的就是数组长度加一的那个数。代码如下:
public class Solution { public int firstMissingPositive(int[] nums) {int len = nums.length;for(int i = 0; i < len;){if(nums[i] != i+1 && nums[i] > 0 && nums[i] <= len && nums[i] != nums[nums[i]-1] ){swap(i,nums[i]-1,nums);}else{i++;}}for(int i = 1; i <= len; i++){if(nums[i-1] != i){return i;}}return len+1; }private void swap(int i, int j, int[] nums) {// TODO Auto-generated method stubint temp = nums[i];nums[i] = nums[j];nums[j] = temp;}}
0 0
- leetcode:41. First Missing Positive (Java)
- (Java)LeetCode-41. First Missing Positive
- [LeetCode] 41. First Missing Positive java
- [leetcode]41. First Missing Positive(Java)
- [Leetcode] First Missing Positive (Java)
- First Missing Positive - Java Leetcode
- [LeetCode][Java] First Missing Positive
- leetcode:First Missing Positive 【Java】
- LeetCode : First Missing Positive [java]
- leetcode:First Missing Positive (JAVA)
- [LeetCode]First Missing Positive(Java)
- [LeetCode]41.First Missing Positive
- LeetCode --- 41. First Missing Positive
- LeetCode 41.First Missing Positive
- [Leetcode] 41. First Missing Positive
- [leetcode] 41.First Missing Positive
- leetCode 41. First Missing Positive
- LeetCode 41. First Missing Positive
- Android进程保活方法
- 第三周 项目1-顺序表的基本运算
- js获取当前三个月的日期输入方法
- php 之 (一)入门
- 十大经典算法总结(Javascript描述)
- (Java)LeetCode-41. First Missing Positive
- zabbix服务端远程执行命令
- 程序员爱写脚本是种病
- 聚类
- Linux的哲学思想
- hdu4221 Greedy?
- 深入浅出RxJava(二:操作符)
- 欢迎使用CSDN-markdown编辑器
- 任务一 HelloWorld