定义:给定一个数组A[0....N-1],找到从1开始,第一个不在数组中的正整数。
如 3,5,1,2,-3,7,14,8 输出4
算法描述:
遍历一遍数组,若A[i] = i,i加1,继续比较后面的元素
若A[i]<i 或者A[i]>N 丢弃A[i],若A[i] > i,则将A[A[i]]和A[i]交换。
代码如下:
public static void main(String[] args) { int[] array = new int[8]; array[0] = 9; array[1] = 8; array[2] = 6; array[3] = 5; array[4] = 4; array[5] = 3; array[6] = 2; array[7] = 1; firstlostNum(array); } public static void firstlostNum(int[] array){ int i = 0; int len = array.length; while(i < len){ if(array[i] == i+1){ i++; }else if ((array[i] < i+1) || (array[i] > len)){ array[i] = array[len-1]; len--; }else{ int temp = array[i]; array[i] = array[temp-1]; array[temp-1] = temp; } } System.out.println(i+1);; }