题目:
解题思路:
没啥好说的,就排序后 按逻辑比较记录return
代码:
public class LC109 {
public static void main(String[] args) {
LC109 lc109 = new LC109();
int[] arr = new int[]{1,3,4};
System.out.println(lc109.firstMissingPositive(arr));
}
public int firstMissingPositive (int[] A) {
if(A.length == 0){
return 1;
}
int len = A.length-1;
quickSort(A,0,len);
int temp = 1;
for(int i=0;i<A.length;i++){
if(A[i] >= 0 && temp >= A[i]){
temp = A[i] + 1;
}
}
return temp;
}
public void quickSort(int[] a,int low,int high){
if(low > high){
return;
}
int start = low;
int end = high;
int target = a[low];
while(start < end){
while(start < end && a[end] >= target){
end--;
}
while(start < end && a[start] <= target){
start++;
}
if(start < end){
int temp = a[end];
a[end] = a[start];
a[start] = temp;
}
}
if(start == end){
a[low] = a[end];
a[end] = target;
quickSort(a,low,end-1);
quickSort(a,end+1,high);
}
}
}