已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数
#include<iostream>
using namespace std;
//#define maxn 2000010
#include<stdio.h>
//int a[maxn];
//int val[maxn];
int main(){
int t;
scanf("%d",&t);
int i;
// memset(val,0,sizeof(val));
int k=2*t;
int v,temp,count;
scanf("%d",&v);
count=1;
for(i=1;i<k;i++){
scanf("%d",&temp);
if(temp!=v&&count==0){
v=temp;count=1;}
else if(temp!=v){
count--;
}
else count++;
}
if(count>=2)printf("%d\n",v);
else printf("-1\n");
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数的更多相关文章
- 找出数组中出现次数超过一半的数,现在有一个数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数
找出数组中出现次数超过一半的数,现在有一个数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数 #include<iostream>using namespace s ...
- 转:已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。
答案: int max(int a,int b){return (a+b+abs(a-b))/2;} 类似的 请定义一个宏,比较两个数a.b的大小,不能使用大于.小于.if语句 答案: #define ...
- search for a range(找出一个数在数组中开始和结束位置)
Given an array of integers sorted in ascending order, find the starting and ending position of a giv ...
- 数组a[n]中存放1-n中的n-1个数,给出算法找出重复的那一个数
问题描述: 数组a[n]中存放1-n中的n-1个数,给出算法找出重复的那一个数. 算法一: 对数组a[n]进行冒泡排序,如果冒泡所得的最值和前一个最值相等,则该最值为重复的数. 分析: 该算法时间复杂 ...
- 【C语言】给一组组数,仅仅有两个数仅仅出现了一次,其它全部数都是成对出现的,找出这两个数。
//给⼀组组数,仅仅有两个数仅仅出现了一次.其它全部数都是成对出现的,找出这两个数. #include <stdio.h> int find_one_pos(int num) //找一个为 ...
- 如何在O(n)的时间复杂度内找出数组中出现次数超过了一半的数
方法一:每次取出两个不同的数,剩下的数字中重复出现次数超过一半的数字肯定,将规模缩小化.如果每次删除两个不同的数,这里当然不是真的把它们踢出数组,而是对于候选数来说,出现次数减一,对于其他数来说,循环 ...
- 28.数组中出现次数超过长度一半的数字(python)
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...
- 【算法学习笔记】Meissel-Lehmer 算法 (亚线性时间找出素数个数)
「Meissel-Lehmer 算法」是一种能在亚线性时间复杂度内求出 \(1\sim n\) 内质数个数的一种算法. 在看素数相关论文时发现了这个算法,论文链接:Here. 算法的细节来自 OI w ...
- 找出n个数中出现了奇数次的两个数
如果是找只出现了奇数次的一个数, 那么我们从头异或一遍就可以. 那么如何找出现了奇数次的两个数呢? 首先我们还是从头异或一遍, 然后结果肯定不为0, 对于异或出来的结果, 如果这个数的某一位是1, 说 ...
随机推荐
- echarts踩坑---容器高度自适应
在echarts中,若设置固定高度,当柱状图数据过多时会出现数据相互挤压,给用户的体验十分糟糕,可以通过给容器设置自适应高度,然后通过getDom()的方法解决此问题. 具体解决办法如下: <d ...
- redis集群步骤(windows环境)
注:原文转自 https://blog.csdn.net/zsg88/article/details/73715947 ,仅用作为方便查阅 一 所需软件:Redis.Ruby语言运行环境.Redis的 ...
- php (zip)文件下载设置
普通下载头大概意思,文件输出的地方二选一,小文件下载.如文件较大时注意执行时间与内存使用.可以看php大文件下载 $filename = $_GET['filename']; $pathname = ...
- 与“零值”作比较的 if 语句。
笔试时候遇到的问题,在此做一下记录. 1.if语句中的布尔变量与零值作比较 不能用布尔变量与true,false,1,0直接作比较.布尔变量类型的语义是:零值为“假”,任何非零值都表示“真”.因为tr ...
- 第二篇:shell基础命令(部分)
目录 一.shell命令规则 二.基础命令详解(部分) ls :列出目录内容 mkdir : 创建目录 rmdir :删除目录 touch:新建文件 mv:修改文件(目录)名.移动路径 cp:复制文件 ...
- numpy.random.shuffle()与numpy.random.permutation()的区别
参考API:https://docs.scipy.org/doc/numpy/reference/routines.random.html 1. numpy.random.shuffle() AP ...
- Python3中高阶函数lambda,filter,map,reduce,zip的详细用法
在Python里有五大高阶函数,他们分别是lambda()匿名函数,filter()筛选函数,map()函数,reduce()函数,zip()函数.下面就让我们来详细的了解一下这五种函数的具体用法吧. ...
- springboot 使用@ConfigurationProperties注入配置属性
导入依赖,让springboot支持@ConfigurationProperties 注解 <!-- 支持 @ConfigurationProperties 注解 --> <depe ...
- Hadoop学习(二) Hadoop配置文件参数详解
Hadoop运行模式分为安全模式和非安全模式,在这里,我将讲述非安全模式下,主要配置文件的重要参数功能及作用,本文所使用的Hadoop版本为2.6.4. etc/hadoop/core-site.xm ...
- 2016-2017-2 20155329 实验四 Android 开发
2016-2017-2 20155329 实验四 Android 开发 ## 任务一:Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBI ...