有一个数组,存储的元素为1到10000000的任意数,在其中查找出一个重复的数字

Bit-map按位存储--轻松应对面试被问到从10亿个数字中查找指定数是否存在 Bit-map的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。Bit-map每一位表示一个数,0表示不存在,1表示存在。例如我们要存储数字{1,2,3,6},则可以使用Bit-map存储结构如下:计算机内存分配的最小单位是字节,也就是8位,那如果要表示{12,13,15}怎么办呢?当然是在另一个8位上表示了,如下图所示:有没有感觉这样得结构有点眼熟?不错,好像变成一个二维数组。 阅读详情
//有一个数组,存储的元素为1到10000000的任意数,在其中查找出一个重复的数字
#include <stdio.h>
int a[3]={1,10000000,10000000};
static unsigned char b[10000000/8+1];
int i;
void main() {
    for (i=0;i<3;i++) {
        if (b[a[i]/8]&(1<<(a[i]%8))) break;
        else b[a[i]/8]|=(1<<(a[i]%8));
    }
    if (i<3) printf("%d\n",a[i]);
    else     printf("Can not find.\n");
}

海量数据处理:查找重复元素 已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数?本题最好的解决方案是通过使用位图法来实现,8位整数可以表示的最大十进制数值为99999999,如果每个数字对应于位图中的一个bit位,那么存储八位整数大约需要99Mbit,因为1Byte = 8bit,所以99Mbit折合成内存为99/8=12.375MB的内存,即可以只用12.375MB的内存表示所有8位数电话号码的内容.... 阅读详情

相关推荐

从1到10000000的质数表.txt

从1到10000000的质数表,详细

数组a[N],存放了1 至N-1 个数,其中某个数重复一次

数组a[N],存放了1 至N-1 个数,其中某个数重复一次。 写一个函数,找出被重复的数字.时间复杂度必须为o(N)函数原型: int do_dup(int a[],int N)   方法一: //好算法,因为第二个重复的数字其位置肯定不会变化,而a[a[0]]正好可以

zhuimengzh的专栏 1万+

Rasa Core开发指南

文章目录1. Rasa Core简介1.1 Rasa Core消息处理流程1.2 安装Rasa Core2. Dialogue模型训练2.1 Story样本数据2.2 Domain2.2.0 intents2.2.1 actions2.2.2 templates2.2.3 entities2.2.4 slots3 .训练和使用对话模型3.1 训练对话模型3.2 使用对话模型4. 搭建CustomA...

老蒋也疯狂 1万+

数组中重复的数字

1.题目 2.解法1(空间复杂度nlogn) 先使用排序算法,接着看相邻元素是不是相等 import java.util.*; public class Solution { public boolean duplicate(int numbers[],int length,int [] duplication) { if(numbers == null || length == 0){ return false; } Ar

wuprogrammer的博客 351

AGV避坑指南:海康控制系统与Modbus设备对接的那些‘坑’

本文深入解析海康AGV控制系统与Modbus设备对接中的常见问题及解决方案,涵盖通信协议对接、信号干扰、硬件层问题和软件优化策略。通过真实案例和实用技巧,帮助工程师规避典型陷阱,提升系统稳定性和效率。

l3m4n的博客 740

智能车图像处理去畸变+逆透视教程

图像处理,去畸变与逆透视整合

wu58430的博客 1万+

数组--LeetCode(python)

乘积最大子序列 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 解法: 第一时间想到的是动态规划,想找当前位置上的乘积最大值,但是发现正负号的...

扣扣biubiubiu~ 2154

FPGA领域四大顶级会议全景解读:从架构到应用的技术风向标

本文全景解读FPGA领域四大顶级会议(FPGA、FCCM、FPL、FPT),剖析其各自定位与技术风向。FPGA会议聚焦架构与工具创新,FCCM专攻硬件加速与定制计算,FPL覆盖从理论到应用的广泛领域,FPT则重点关注亚太市场与前沿应用。跟踪这些会议是把握FPGA技术演进、寻找创新灵感和应用方案的高效途径。

weixin_29274969的博客 335

C语言 找出数组中重复数字出现最多的数

在堆区申请一个超级大的一维数组空间,用它的下标存原数组的数。。出现一次对应下标的值+1…觉得这样方便的不然就是不停的遍历…暂时没想到其他办法…就投机一下。 int Find(int *pStr,int len,int *pa) { int i; int *p1 = pStr; for(i = 0;i&lt;len;i++) { //printf("=%d=",p1[i]); int...

qq_37667464的博客 1万+

SAP RAP 里的 EML 全解:从语言定位到事务语义,再到真实案例的落地方式

摘要:EML(Entity Manipulation Language)是ABAP RAP模型的核心组件,作为ABAP的子集用于操作业务对象(BO)。它通过声明式语法(READ/MODIFY/EXECUTE/COMMIT)统一访问BO的行为与数据,并由RAP运行时自动处理校验、锁定、草稿管理等生命周期。EML将业务语义融入代码,确保与Fiori应用共享同一套校验逻辑,并通过FAILED/REPORTED/MAPPED管道传递错误与消息。其事务控制(IN LOCAL MODE与COMMIT ENTITIES)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 528

【ComfyUI】SD1.5 + ControlNet 边缘检测融合动漫转真人

本文介绍了一个基于ComfyUI的动漫转真人图像生成工作流,通过多模型协同实现高质量的二次元图像转换。该工作流集成了Canny线稿预处理、ControlNet结构控制、VAE编码解码和人脸精细化处理等核心环节,采用majicmixRealistic_v7作为主模型,配合yolov8、SAM等辅助模型。整个流程包含11个标准化步骤,从图像输入、预处理到最终超分输出,通过ControlNet引导和CLIP语义控制确保生成图像的写实感和结构准确性,特别针对人脸区域进行专业优化,最终可输出高分辨率写实人像。

Mr数据杨 1125

教你用BitMap排序、查找和存储大量数据

Bit-map的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。 假设现在有这样一个需求:在20亿个随机整数中找出某个数是否存在其中,并假设32位操作系统,4G内存,你会怎么做?我们知道在java中,一个int占4字节,1字节=8位(1 byte = 8 bit),如果每个数字用int存储,那就是20亿个int,因而占用的空间约为: 2000000000*4/1024/1024/1024≈7.45 G 显然消

weixin_43525722的博客 5163

信号处理仿真:自适应信号处理_(8).自适应信道均衡

在无线通信系统中,信道的多径效应和时变特性会导致信号的失真,从而影响通信质量。自适应信道均衡技术通过实时调整均衡器的参数,以补偿信道失真,提高信号的质量和可靠性。本节将详细介绍自适应信道均衡的原理、算法和实现方法,并通过具体的仿真例子来说明其应用。

2401_87715305的博客 1039

HDU 4151 The Special Number 打表+二分

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4151 题目解析: 先打表求出所有特殊数存到数组res[1000000]中,然后对于每一个数在表中进行二分查找,找到的位置即小于等于该数的特殊数个数。 #include <iostream> using namespace std; int res[1000000]; int main...

Wei Masking的博客 281

亿图机床采集数据

这个数控系统的英文名是HUST,在台湾知名度还可以,但大陆这边我做这么多年项目也只接触过屈指可数的几次,可见市场占有率并不大,联网采集不复杂。

若云流风的专栏 2491

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【算法】10亿int型数,统计只出现一次的数

题目10亿int整型数,以及一台可用内存为1GB的机器,时间复杂度要求O(n),统计只出现一次的数?分析首先分析多大的内存能够表示10亿的数呢?一个int型占4字节,10亿就是40亿字节(很明显就是4GB),也就是如果完全读入内存需要占用4GB,而题目只给1GB内存,显然不可能将所有数据读入内存。我们先不考虑时间复杂度,仅考虑解决问题。那么接下来的思路一般有两种。 位图法:用一个bit位来标识一个i

Mlib 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

代码随想录算法训练营第五天:有效的字母异位词,两个数组的交集,快乐数,两数之和

短短五天的进度已经快追上我之前一个月的进度了,甚至对题目的理解程度还要更甚于前,我打心里感受到了写博客的威力,今天这道两数之和给我的感触最深,梦开始的地方也是梦碎的地方,之前的我其实就是卡哥文章中提到的“通过了题目,但是没想清楚map是用来做什么的,以至于对代码的理解其实是一知半解的”,这次我对着代码捋了一遍又一遍,还借助了ai的力量,终于在半个小时后将整条逻辑链给理顺了,这个key和value分别对应谁真的是让我一顿好想。提前做一个判断,如果s和t的长度不一致,直接返回false,防止后面无意义比较。

guoba250的博客 1509

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【算法-位图法】在海量数据中查找重复元素

什么是位图法? 举个简单例子,在java中一个int类型的数有32位,而这32只表示一个数太过浪费,于是就考虑让这32位可以表示32个数,每一位表示该数是否存在,例如: 这里用16位的二进制就能表示十六个数字,1表示存在,0表示不存在,上图就表示存在(16,12,6,4,1)这五个数。 在海量数据中查找重复出现的元素或者去除重复出现的元素也是常考的问题。针对此类问题,一般可以通过位图法...

fxkcsdn的博客 3502

BitMap简介

目录 1. BitMap 2. Bitmap有什么用 3. BitSet 1. BitMap Bit-map的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。(PS:划重点节省存储空间) 假设有这样一个需求:在20亿个随机整数中找出某个数m是否存在其中,并假设32位操作系统,4G内存 在Java中,int占4字节,1字节=8位(1 byte = 8 bit) 如果每个数字用int...

Dengrz的Blog 3273

位图-在20亿个随机整数中找出某个数m是否存在其中?

在20亿个随机整数中找出某个数m是否存在其中。 基于这个问题,我们可以使用位图来解答。 大致思路是将20亿个无序数映射到二进制数组(位图)中去,再去查看数组中是否存在m数,即某位是否为1。 所以最重要的是如何映射? 实现 在Java中,int占4字节,1字节 = 8位(1 byte = 8 bit) 如果每个数字用int存储,那就是20亿个int,因而占用的空间约为 (2000000000*4/1024/1024/1024)≈7.45G 如果按位存储就不一样了,20亿个数就是20亿位,占用空间约为

See_Csdn_的博客 449

[C++日常小题] 寻找第k大数字(numberk)

Description经过长时间的筹备工作,在Jourk,Ronny,Plipala,阿长,阿沈等人的努力下,DM实验室建立起自己的系列网站,其中包括三个大板块:DMOJ首页、DMOJ论坛、DMOJ博客。 作为一个大型的网站,数据的加工处理需要用到很多算法系统模块,通过这些模块对系统主数据库进行修改。因此,在构建DMOJ系列网站的过程中,编写了一个庞大的数据统计系统,其中包括一个寻找第k大数字的模

从入门到扑街 7351

数据结构之位图(11)

1、原理 位图是通过将数组下标与应用中的一些值关联映射,数组中该下标所指定的位置上的元素可以用来标识应用中值的情况(是否存在或者数目 或者计数等),位图数组中每个元素在内存中占用1位,所以可以节省存储空间。位图是一种非常简洁快速的数据结构,它能同时使存储空间和速度最优化。如可用一个10位长的字符串来表示一个所有元素都小于10的简单的非负整数集合,例如,可以用如下字符串表示集合{1,2,4

公众号(猴子数据分析) 6023

海量数据Topk及重复问题

//大数据时代,查找效率最高怎么办,如查询10000个数中最大的100个数; //1.排序中最快的是快速排序,时间复杂度为o(nlogn),将10万个数全排序,不好 //2.局部淘汰,构建容量100的数组,将前100个放入,后面的如果有的数比前一百个最小的大,就替换 //3.分治算法。分为10个组,每组1000个,选出每组的前100个,怎么选:首先快速排序,分为2个堆,如果大堆大于

can9999的博客 1218

JS 随机生成不重复的数字字符串

JS 随机生成0-10位不重复的数字字符串。

chenyajundd的博客 1277

利用位向量实现海量数据存储

最近需要接触大型数据存储,正好操作系统课上讲到了位图法,考虑到以后可能会用到,所以将以前的题目翻出来晒一晒先来讲一讲简单的位图法(位向量法) 位向量顾名思义就是用位来存储一个数,文中说存储N=10000000个数,每一位代表一个数。 我们可以定义一个int类型的数组int a[N],那么如果a[9]的值为1,则表明文件中存在一个值为9。 这样的话,我们就可以用一个数组来表示这么多数

摩尔的博客 1667
上一篇: window内核原理和实现
下一篇: 计算机中栈区,堆区,静态存储区,文字常量存储区,代码区的详细解释
小人物2014
博客等级 码龄19年 66粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值