欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

(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;
    }
}
相关标签: java基础学习笔记