题目:
给定一个未排序的整数数组,找出其中没有出现的最小的正整数。
示例:
说明:
你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。
代码:(Java)
- 解法一
class Solution {
public int firstMissingPositive(int[] nums) {
//数组为空
if (nums == null) {
return 0;
}
//数组没有元素
if (nums.length == 0) {
return 1;
}
//数组长度为1时
if (nums.length == 1) {
if (nums[0] == 1) {
return (nums[0] + 1);
} else {
return 1;
}
}
//数组排序
Arrays.sort(nums);
//去除数组中的非正整数
int[] newNums = new int[0];
boolean flag = false;
for (int i = 0; i < nums.length; i++) {
if (nums[i] > 0) {
flag = true;
newNums = Arrays.copyOfRange(nums, i, nums.length);
break;