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

leetcode:First Missing Positive 【Java】

2016-03-03 19:37 399 查看
一、问题描述

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.
二、问题分析

利用BitSet集合,BitSet讲解见博文Java
BitSet笔记。

三、算法代码

public class Solution {
    public int firstMissingPositive(int[] nums) {
        if(nums.length == 0){
			return 1;
		}
        
        int index = -1;
        BitSet bs = new BitSet();
        for(int i = 0; i < nums.length; i++){
        	if(nums[i] >= 0){
        		bs.set(nums[i]);
        	}
        }
        for(int j = 0; j < bs.length(); j++){
        	if(!bs.get(j)){
        		if(j != 0){//0不算正数,所以要剔除
        			index = j;
        			break;
        		}
        	}
        	if(j == bs.length() - 1){
        		index = j + 1;
        	}
        }
        return index;
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: