java实现缺失整数查找功能

本文介绍了一种使用辅助数组来找出已知范围内缺失数字的方法。通过遍历混乱数组并标记已出现的数字,在第二次遍历辅助数组时找出未被标记的位置,从而确定缺失的数字。

package test;
/**
 * 题目:有一组数字,从1到n,其中减少了x个数,顺序也被打乱,放在一个n-x的数组里,请找出丢失的数字。  
         思路:声明一个新的长度是n+1的数组toolsArray,
          然后遍历被打乱顺序且缺失数字的数组src,
          比如src中遍历到的数据z,让 toolsArray[z]=1;然后再遍历toolsArray,找到数值不为1的下标;  
 * @author Kui
 *
 */
public class HelloA {
public static void main(String[] args) {
//定义一个缺失整数的int类型数组 并进行初始化  
int[] src={1,2,3,4,6,9};
//调用查找方法
System.out.println("缺失的整数为: " + getRemoveNums(src,9));
}

/**
* @param src --缺失整数的数组
* @param maxLength --数组最大长度
* @return result --缺失的整数字符串
*/
private static String getRemoveNums(int[] src, int maxLength){
//定义一个字符串  用于接收查找的字符 并且进行初始化
String result = "";
//定义一个新的maxLength + 1 的数组 
//用于存储格式化后的src数组
//1 表示存在的元素 0不是缺失的元素
int[] toolArray = new int[maxLength + 1];
//初始化数组第一个元素为  1 
toolArray[0]=1;
//遍历缺失数组
for (int i = 0; i < src.length; i++) {
//接收数组元素
int num = src[i];
//数组元素存在 则格式化为 1   缺失则默认赋值为 0 
toolArray[num] = 1;
}
//遍历工具格式化数组
for (int i = 0; i < toolArray.length; i++) {
//接收格式化数组的元素
int num = toolArray[i];
//输出格式化数组
System.out.println("toolArray"+i+ ":" + toolArray[i]);
//如果数组元素不为1  表示缺失的数组 
if (num != 1 ) {
//取出缺失的数组   :即格式化数组元素不为1 的下标值
result += i + " ";
}
}
//返回缺失整数  的字符串   结果
return result;

}


}


程序运行结果:

toolArray0:1

toolArray1:1

toolArray2:1
toolArray3:1
toolArray4:1
toolArray5:0
toolArray6:1
toolArray7:0
toolArray8:0
toolArray9:1

缺失的整数为: 5 7 8 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值