java數組調用
⑴ java常用演算法,給個int數組,數字不連續,找出最小空缺數
在處理一個整數數組時,如果數組中的數字不連續,找出最小的空缺數字是一個常見的需求。例如,給定數組為 {1, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20},我們需要找到數組中最小的缺失整數。這個問題可以通過遞歸的方法來解決。
首先,我們定義一個主方法,該方法接收一個整數數組作為輸入,並調用輔助方法來找到最小的空缺數字。主方法中的代碼如下:
java
public static void main(String[] args) {
int[] array = new int[] {1,2,3,6,7,8,9,10,11,12, 13, 14, 15, 16, 17, 18, 19, 20};
//將數組拆分
int minque = 1;
if (1 == array[0]){
minque = zhaoque(array);
}
System.out.println(minque);
}
輔助方法 `zhaoque` 用於遞歸地查找最小的空缺數字。以下是該方法的實現:
java
public static int zhaoque(int[] array){
int minque = 1;
//array 不為空
if (null != array && array.length>0){
if (array.length == 1){
minque = array[0]+1;
}
else if(array.length == 2){
if (1 == (array[1] - array[0])){
minque = array[1]+1;
} else {
minque = array[0]+1;
}
}
else {
int headlength = (array.length+1)/2;
int[] headArray = new int[headlength];
System.array(array,0,headArray,0,headlength);
//檢查前半部分是否密集
int headmin = headArray[0];
int headmax = headArray[headlength-1];
if (headlength > (headmax - headmin)){
//前部分密集分布
int footlength = array.length - headlength;
int[] footArray = new int[footlength];
System.array(array,headlength,footArray,0,footlength);
int footmin = footArray[0];
int footmax = footArray[footlength-1];
// 檢查後部分是否與前部分銜接
if (1 == (footmin - headmax)){
//檢查後部分是否密集
if (footlength > (footmax - footmin)){
//後半部分密集分布
minque = footmax +1;
} else {
minque = zhaoque(footArray);
}
} else {
minque = headmax +1;
}
} else {
minque = zhaoque(headArray);
}
}
}
return minque;
}
通過這種方法,我們可以有效地找出給定數組中最小的空缺數字。