(Java)如何在一个整数数组中找到丢失的数字?
程序员文章站
2022-03-13 12:27:29
...
import java.util.Arrays;
import java.util.BitSet;
public class LostNum {
public static void main(String[] args) {
int[] arr = {1, 2, 4, 6, 9};
LostNum lostNum = new LostNum();
System.out.println(Arrays.toString(lostNum.findLost(arr,10)));
}
/**
* 查找丢失的数字
* @param arr 原始数组
* @param count 未丢失数字时数组的长度
* @return
*/
public int[] findLost(int[] arr, int count) {
if (arr == null || count < 1 || arr.length > count) {
throw new IllegalArgumentException("请检查传入参数是否正确!");
}
int[] result = new int[count - arr.length];
BitSet bitSet = new BitSet(arr.length);
for (int i : arr) {
bitSet.set(i);
}
int index = 0;
for (int i = 0; i < result.length; i++) {
//通过BitSet的nextClearBit方法找到以index为起始位置的第一个出现bit位为false的位置,其返回值则是缺失的数字
index = bitSet.nextClearBit(index);
result[i] = index;
index++;
}
return result;
}
}