算法通关村第十五关 | 青铜 | 用4KB内存寻找重复元素

处理海量数据的思路

1.使用位存储:占用的空间是存整数的 1/8 。

2.分块:也叫外部排序,将大文件划分为若干小块,先处理小块再逐步得到想要的结果,需要至少遍历两次全部序列,是用时间换空间的方法。

3.堆:极其适合超大数据或者流数据中找第 K 大,第 K 小, K 个最大, K 个最小等等问题。

用4KB内存寻找重复元素

给定一个数组,长度最大为32000 ,在其中找重复元素,但是只能使用 4KB 内存。

采用位运算。

public class FindDuplicatesIn32000 {
   
    public void checkDuplicates(int[] array) {
   
        BitSet bs = new BitSet(32000);
        for (int i = 0; i < array.length; i++) {
   
            int num = array[i];
            int num0 = num - 1;
            if (bs.get(num0)) {
   
                System.out.println(num);
            } else {
   
                bs.set(num0);
            }
        }
    }
    class BitSet {
   
        int[] bitset;
        public BitSet(int size) {
   
            this.bitset = new int[size >> 5];
        }
        boolean get(int pos) {
   
            int wordNumber = (pos >> 5);
            int bitNumber = (pos & 0x1F);
            return (bitSet[wordNumber] & (1 << bitNumber)) != 0;
        }
        void set(int pos) {
   
            int wordNumber = (pos >> 5);
            int bitNumber = (pos & 0x1F);
            bitset[wordNumber] |= 1 << bitNumber;
        }
    }
}

如果对您有帮助,请点赞关注支持我,谢谢! ❤
如有错误或者不足之处,敬请指正! ❤
个人主页:星不易
算法通关村专栏:不易|算法通关村

相关推荐

  1. 算法通关——4kb寻找重复元素

    2023-12-13 01:40:03       63 阅读
  2. 算法通关 | 青铜 | 回溯

    2023-12-13 01:40:03       62 阅读
  3. 算法通关—理解位运算的规则(青铜)

    2023-12-13 01:40:03       55 阅读
  4. 算法通关—理解栈手写栈(青铜)

    2023-12-13 01:40:03       57 阅读
  5. 贪心算法入门题(算法青铜挑战)

    2023-12-13 01:40:03       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-13 01:40:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-13 01:40:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-13 01:40:03       82 阅读
  4. Python语言-面向对象

    2023-12-13 01:40:03       91 阅读

热门阅读

  1. 第30期 | GPTSecurity周报

    2023-12-13 01:40:03       52 阅读
  2. 力扣labuladong——一刷day66

    2023-12-13 01:40:03       51 阅读
  3. SpringBoot 面试题和答案,最新面经

    2023-12-13 01:40:03       53 阅读
  4. 不容错过的计算机网络知识点解密!

    2023-12-13 01:40:03       48 阅读
  5. 从理论分析高可用

    2023-12-13 01:40:03       51 阅读
  6. 微信小程序如何跳转到网页

    2023-12-13 01:40:03       52 阅读
  7. 青蛙跳台阶(C语言)

    2023-12-13 01:40:03       56 阅读
  8. 基于深度学习的热红外图像增强算法

    2023-12-13 01:40:03       52 阅读
  9. SpringBoot整合easyExcel实现CSV格式文件的导入导出

    2023-12-13 01:40:03       68 阅读