BitSet

作者: Ravenddd | 来源:发表于2020-01-12 22:15 被阅读0次

    题目: 有1千万个随机数,随机数的范围在1到1亿之间。现在要求写出一种算法,将1到1亿之间没有在随机数中的数求出来

    代码

    public class Alibaba {
        public static void main(String[] args) {
    
            // 生成随机数
            Random random=new Random();
            List<Integer> list=new ArrayList<>();
            for(int i=0;i<10000000;i++) {
                int randomResult=random.nextInt(100000000);
                list.add(randomResult);
            }
    
            // 打印生成随机数
            System.out.println("产生的随机数有");
            for(int i=0;i<list.size();i++) {
                System.out.println(list.get(i));
            }
    
            // 创建一亿位的BitSet
            BitSet bitSet=new BitSet(100000000);
            for(int i=0;i<10000000;i++) {
                // 把随机数放进去
                bitSet.set(list.get(i));
            }
    
            // 打印结果:0~1亿不在上述随机数中的结果
            System.out.println("0~1亿不在上述随机数中有" + bitSet.size());
            for (int i = 0; i < 100000000; i++) {
                if(!bitSet.get(i)) {
                    System.out.println(i);
                }
            }
        }
    }
    
    

    说明 BitSet

    1. 去重
    2. 正序
    3. 长度为64倍数(默认64)
    4. get()方法是返回boolean值, 存在值为true, 不存在为false(注意:这个get的参数是值, 并不是索引下标)

    相关文章

      网友评论

          本文标题:BitSet

          本文链接:https://www.haomeiwen.com/subject/qbbwactx.html