java常用算法,给个int数组,数字不连续,找出最小空缺数

首先,我们定义一个主方法,该方法接收一个整数数组作为输入,并调用辅助方法来找到最小的空缺数字。主方法中的代码如下: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...
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.arraycopy(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.arraycopy(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;

}

通过这种方法,我们可以有效地找出给定数组中最小的空缺数字。2024-12-16
mengvlog 阅读 31 次 更新于 2025-08-09 00:10:23 我来答关注问题0
  •  文暄生活科普 JAVA怎么随机生成0 1 2这三个整数

    Java中的Random类提供了多种生成伪随机数的方法。除了nextInt(int n),还有其他几个常用的方法,如:nextInt():返回一个伪随机的int值,范围在0(包括)到2147483647(不包括)之间。nextLong():返回一个伪随机的long值,范围在0(包括)到2^63-1(不包括)之间。nextFloat():返回一个伪随机的f...

  •  宋天一x340 Java如何求一个整数的平方和?

    import java.util.Scanner;public class SumEven {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("输入一个正整数");int n = sc.nextInt();int half = (n-1)/2;//n以内的所有的整数的一半,若包含n,此处不减一int sum = (1+half)...

  • 最佳答案:冒泡排序算法。一下为C#语言例子:int temp = 0;int[] arr = { 23, 44, 66, 76, 98, 11, 3, 9, 7 };Console.WriteLine("排序前的数组:");foreach (int item in arr){ Console.Write(item + " ");} Console.WriteLine();for (int i = 0; i < arr.Length-1; i...

  •  腾云新分享 编写java程序,double tind(int n) 方法功能求2的N次方 程序中调用该方法 输出2的40次方并输出

    在主方法中,我们调用了tind方法,传入参数40,计算2的40次方。然后通过System.out.println输出计算结果。具体实现如下:java public class Test10 { / 计算2的N次方 param n 指定的次数 return 2的N次方结果 / static double tind(int n) { double s = 1;for (int i = 0; i < n; i++)...

  •  翡希信息咨询 剖析Integer与二进制算法——位翻转

    一、reverseBytes(int i)方法 reverseBytes(int i)方法的作用是按字节翻转整数的二进制表示。其实现原理是通过位移和位运算来完成的。实现原理:首先,将整数的最高字节(即最左边的8位)通过无符号右移24位移动到最低位。然后,将整数的第二个字节(从左边数第二个8位)通过右移8位并与0xFF00进行...

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部