博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
现在有一个整数数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数...
阅读量:6721 次
发布时间:2019-06-25

本文共 493 字,大约阅读时间需要 1 分钟。

现在有一个整数数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数。

方法1:Hash链表

方法2:使用两个变量A和B,其中A存储某个数组中的数,B用来计数。开始时将B初始化为0。

遍历数组,

如果B=0,则令A等于当前数,令B等于1;

如果当前数与A相同,则B=B+1;

如果当前数与A不同,则令B=B-1。

遍历结束时,A中的数就是要找的数。

这个算法的时间复杂度是O(n),空间复杂度为O(1)。

c语言描述:

 

int main(){  int i,A,B;  int a[10]={1,2,3,1,2,1,1,6,1,1};  A=a[5];  B=0;  for(i=0; i<10; i++)  if(B=0)  {    A = a[i];    B =1;  }elseif( A==a[i])    B++;  elseif(A!=a[i])    B--;  printf("%d", A);  getchar();  return 0;}

 

转载于:https://www.cnblogs.com/ciangcic/p/3528218.html

你可能感兴趣的文章
天启android5.1系统无法在非1650批次号的rk3288w芯片上启动
查看>>
C#.net书籍列表
查看>>
将IRepository接口进行抽象,使它成为数据基类的一个对象,这样每个子类都可以有自己的最基础的CURD了...
查看>>
IIS7.5 错误代码0x8007007e HTTP 错误 500.19 - Internal Server Error
查看>>
数论17——反演定理(二项式反演)
查看>>
第十八章 用于大型程序的工具
查看>>
ASP.NET 2.0学习笔记之Object Tag Syntax
查看>>
Redis 配置文件
查看>>
Jmeter Smock Test规范设计
查看>>
MurmurHash算法:高运算性能,低碰撞率的hash算法
查看>>
Download error: unknown url type: https
查看>>
vagrant虚拟机共享目录在windows宿主下的禁忌
查看>>
数据表操作类
查看>>
[v9] 列表页 调用 正文内容 或 自定义 字段(moreinfo的调用方法)
查看>>
php截取指定字符串之间的字符串的类
查看>>
C# 根据Excel模版导出文件
查看>>
Oracle与DB2的区别
查看>>
bzoj 2500 幸福的道路 树上直径+set
查看>>
新iPad未到 老iPad价格反弹
查看>>
[转载] 建党伟业
查看>>