算法通关村-----位运算在海量元素中查找重复元素的妙用

news/2024/11/17 3:36:59/

用4KB内存寻找重复元素

问题描述

给定一个数组,包含从1到N的整数,N最大为32000,数组可能还有重复值,且N的取值不定,若只有4KB内存可用,如何打印数组中所有的重复元素。

问题分析

Java中存储整数使用int或者long,这里使用int就可以了。每一个int整数占四个字节,320004B=128KB,题目中要求我们只使用4KB,很明显我们不能使用int来存储,最为节省空间的存储方式就是使用位来存储,即bit,4KB可以寻址48*2^10=32768>32000,即对于从1到N的整数,我们可以遍历数组,如果某个整数第一次出现,将其对应的下标置1,如果该整数再次被遍历到且下标为1,则判定为重复。

代码实现

public void checkDuplicatesIn32000(int[] array) {BitSet bitSet = new BitSet(32000);for (int i = 0; i < array.length; i++) {int num = array[i];int num0 = num - 1;if(bitSet.get(num0)){System.out.println(num);}else {bitSet.set(num0);}}}

http://www.ppmy.cn/news/1094347.html

相关文章

kuiper安装

1:使用docker方式安装 docker pull lfedge/ekuiper:latest docker run -p 9081:9081 -d --name kuiper -e MQTT_SOURCE__DEFAULT__SERVERtcp://127.0.0.1:1883 lfedge/ekuiper:latest这样就安装好了&#xff0c;但是操作只能通过命令完成&#xff0c;如果想要通过页面来操作&…

CUDA相关知识科普

显卡 显卡&#xff08;Video card&#xff0c;Graphics card&#xff09;全称显示接口卡&#xff0c;又称显示适配器&#xff0c;是计算机最基本配置、最重要的配件之一。就像电脑联网需要网卡&#xff0c;主机里的数据要显示在屏幕上就需要显卡。因此&#xff0c;显卡是电脑进…

LeetCode刷题笔记【25】:贪心算法专题-3(K次取反后最大化的数组和、加油站、分发糖果)

文章目录 前置知识1005.K次取反后最大化的数组和题目描述分情况讨论贪心算法 134. 加油站题目描述暴力解法贪心算法 135. 分发糖果题目描述暴力解法贪心算法 总结 前置知识 参考前文 参考文章&#xff1a; LeetCode刷题笔记【23】&#xff1a;贪心算法专题-1&#xff08;分发饼…

catface,使用Interface定义Controller,实现基于Http协议的RPC调用

catface 前言cat-client 模块EnableCatClientCatClientCatMethodCatNoteCatResponesWrapperCatClientConfigurationCatClientProviderCatClientFactoryCatSendInterceptorCatHttpCatPayloadResolverCatObjectResolverCatLoggerProcessorCatResultProcessorCatSendProcessorAbst…

一套成熟的实验室信息管理系统(云LIS源码)ASP.NET CORE

一套成熟的实验室信息管理系统&#xff0c;集前处理、检验、报告、质控、统计分析、两癌等模块为一体的网络管理系统。它的开发和应用将加快检验科管理的统一化、网络化、标准化的进程。 LIS把检验、检疫、放免、细菌微生物及科研使用的各类分析仪器&#xff0c;通过计算机联…

力扣(LeetCode)算法_C++—— 两个数组的交集

给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,2,1], nums2 [2,2] 输出&#xff1a;[2] 示例 2&#xff1a; 输入&#xff1a;nums1 …

【MySQL】MySQL 数据库基础

MySQL 数据库基础 一. 数据库的操作1. 显示当前的数据库2. 创建数据库3. 使用数据库4. 删除数据库 二. 常用数据类型1. 数据类型2. 字符串类型3. 日期类型 三. 表的操作1. 查看表结构2. 创建表4. 删除表 一. 数据库的操作 1. 显示当前的数据库 SHOW DATABASES;MySQL 不区分大…

华为云云服务器评测 | 微信小程序使用JSAPI实现微信支付,从商户注册到成功支付全流程说明(含完整测试demo)

目录 概述 博文和Demo说明 营业执照说明 认证过的小程序&#xff08;免去每年300认证费方案&#xff09; 商户注册 获取支付支持参数&#xff08;商户号&#xff0c;API密匙...&#xff09; 后端开发 前置说明 前置准备 项目目录结构 主要功能代码 下单接口 支付…