数组中未出现的最小正整数
【题目】
给定一个无序整型数组arr,找到数组中未出现的最小正整数。
【举例】
arr=[-1,2,3,4]。返回1。
arr=[1,2,3,4]。返回5。
code:
package com.leetcode.code;
public class MissNum {
public static <T> void swap(T t1, T t2){
T tmp = t1;
t1 = t2;
t2 = tmp;
}
public static int missnum(int[] arr){
int l=0;
int r = arr.length;
while(l<r){
if(arr[l]==l+1){
l++;
}else if(arr[l]<l||arr[l]>r||arr[arr[l]-1]==arr[l]){
arr[l] = arr[--r];
}else{
swap(arr[l],arr[arr[l]-1]);
}
}
return l+1;
}
public static void main(String[] args) {
int[] arr={-1,2,3,4};
int result = missnum(arr);
System.out.println(result);
}
}