/**
* Created by lxw, liwei4939@126.com on 2017/11/3.
* 数组中未出现的最小正整数
* 给定一个无序整形数组arr,找到数组中未出现的最小正整数
*/
public class missMinInt {
public 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[l] - 1);
}
}
return l+1;
}
public void swap(int[] arr, int index1, int index2){
int tmp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = tmp;
}
public static void main(String[] args){
missMinInt tmp = new missMinInt();
int[] arr = {-1, 2, 3, 4};
System.out.println(tmp.missNum(arr));
}
}
数组中未出现的最小正整数
最新推荐文章于 2021-09-18 19:43:50 发布