第三章:查找与排序(下)----------- 3.11 趣味拓展_寻找发帖水王

寻找发帖水王 寻找发帖水王 题目: Tango是微软亚洲研究院的一个试验项目。研究院的员工和实习生们都很喜欢在Tango上面交流灌水。传说,Tango有一大“水王”,他不但喜欢发贴,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子总数的一半。如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能快速找出这个传说中的Tango水王吗? 立即下载

编程之美_寻找发帖水王:

变化:出现的次数恰好为个数的一半,求这个数。

关于加强版水王的题,可以通过扫描一遍数组就能解决问题:

水王占总数的一半,说明总数必为偶数;

不失一般性,假设每隔一个数就是水王的id,两两不同最后一定会消为0;

水王可能是最后一个元素,每次扫描到时候,多一个动作,和最后一个元素作比较,单独计数,计数恰好为一半;

如果不是,那么去掉最后一个元素,水王就是留下来的那个candidate

 

#include <iostream>
#include<algorithm>
using namespace std;

void waterKing(int arr[],int length){
	int candidate=arr[0];
	int nTime=0;
	int countOfLast=0;//统计最后这个元素出现的次数 
	int N=length;
	for(int i=0;i<N;i++){
		//增加与最后一个元素比较的步骤 
		if(arr[i]==arr[N-1]){
			countOfLast++;
		}
		if(nTime==0){
			candidate=arr[i];
			nTime=1;
			continue; 
		}
		if(arr[i]==candidate){
			nTime++;
		}
		else{
			nTime--;
		}
	}
	//最后一个元素出现的次数是n/2 
	if(countOfLast==N/2){
		cout<<arr[N-1];
	}
	else{
		cout<<candidate;
	}
}
 
int main()
{
	int arr[]={1,3,5,2,1,3,1,1};
	waterKing(arr,8);
	return 0;
}

结果:

 

 

ONFI5.0命令字实战指南:从基础操作到高级应用 本文深入解析ONFI5.0协议的核心——命令字,提供从基础操作到高级应用的实战指南。详细拆解了NAND闪存的复位、读状态、数据读取(00-30)、页编程(80-10)和块擦除(60-D0)等关键命令周期,并探讨了多平面操作与缓存操作等高级性能优化技巧,帮助开发者高效、稳定地与NAND芯片进行底层交互。 阅读详情

相关推荐

Agv、Rgv 车辆控制调度系统开发第一篇

Agv、Rgv 车辆控制调度系统第一篇为什么要做这个系统先看作品从头讲起算法讲解编程语言从哪里开始继续深入预告 为什么要做这个系统 说白了是为了赚钱,在一个项目中发现公司买别人家的调度系统要几十万,还只是一个项目的实施,从那天起我就决定自己写一套,用了一年的时间写出来后,才发现根本卖不掉,卖不掉就卖不掉吧,反正我现在已经吧写这套系统当成了一种乐趣,如果不让我写了我反而不适应,但是没有人欣赏我的成果我反而很难受,所以决定吧这个系统的创作过程,写下来,给后面的人一些建议,少走点弯路。 先看作品 从头讲起 在

持续分享调度系统开发过程 2万+

编程之美--寻找发帖水王

问题描述: Tango是微软亚洲研究院的一个试验项目。研究院的员工和实习生们都很喜欢在Tango上面交流灌水。传说,Tango有一大“水王”,他不但喜欢发贴,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子总数的一半。如果你有一个当前论坛上所有帖子(包括回帖)

rein07的专栏 1万+

Dify DSL文件分享 Dify讨论群 大模型token资源等(持续收集更新)

基于LLMOps平台-Dify的一站式学习平台。包含不限于:Dify案例、DSL文件分享、模型接入、Dify交流讨论等各类资源分享。

同名公众号:dify实验室 3717

寻找发帖“水王”及扩展题

问题: Tango是微软亚洲研究院的一个试验项目,研究院的员工和实习生们都很喜欢在Tango上面交流灌水。传说,Tango有一大“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子总数的一半。如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能快速中找出这个传说中的Tango水王吗? 分析与解法: 最直接的方法,我们可以对

tanyujing的专栏 3450

2025海外代理IP深度横评:Bright Data、IPFoxy、SmartProxy等六大服务商实战对比

本文深度横评2025年六大海外代理IP服务商(Bright Data、IPFoxy、SmartProxy、IPIPGO、Kookeey及青果网络),基于实战测试数据,从IP池质量、速度稳定性、性价比等维度进行对比。针对跨境电商、数据爬虫、社交媒体管理等不同业务场景,提供精准的选购指南与避坑建议,帮助企业用户根据自身需求选择最合适的代理IP解决方案。

weixin_29196891的博客 435

【FPGA XDMA AXI Bridge 模式】PCIe:BARs 和 AXI:BARs 含义解析

Xilinx的 DMA/Bridge Subsystem for PCI Express IP核中,支持普通的XDMA模式,但是这种模式只允许主机端发起PCIe 读写请求,FPGA内部无法主动发起读写请求,也即FPGA无法主动读写HOST的内存。而该IP核的另一种模式,AXI Bridge模式则支持HOST主动读写,以及FPGA主动读写。该模式下有个参数需要配置,分别是PCIe:BARs以及AXI:BARs。而上述的普通模式只有PCIe:BARs需要配置。下面详细说说这两个参数的含义。

weixin_45888152的博客 3734

编程之美 -- 寻找发帖水王,以及扩展题

#include #include using namespace std; unsigned int find_id(unsigned int *array,unsigned int n); unsigned int find_half_id(unsigned int *array,unsigned int n); void find_3_more(unsigned int *array,

点滴在心 888

LFM调制信号分类与检测识别

支持识别LFM信号、间歇采样干扰(ISRJ)、灵巧噪声干扰(SNJ)、扫频干扰(SJ)、瞄准干扰(AJ)、阻塞干扰(BJ)、密集假目标干扰(DFJ)、密集假目标加灵巧噪声干扰(DFWSNJ)、距离欺骗干扰(DDJ)、距离欺骗加灵巧噪声干扰(DDWSNJ)。Faster-RCNN支持检测识别LFM信号、间歇采样干扰(ISRJ)、灵巧噪声干扰(SNJ)、扫频干扰(SJ)、瞄准干扰(AJ)、密集假目标干扰(DFJ)、密集假目标加灵巧噪声干扰(DFWSNJ)、距离欺骗加灵巧噪声干扰(DDWSNJ)等8种信号。

菜yuan~的博客 1029

【编程之美学习笔记】2.3寻找发帖水王

坊间风闻“水王”发帖数目超过帖子总数的一半,如果你有一个当前论坛上所有帖子的列表,其中帖子作者的ID也在表中,你能快速找出这个传说中的水王吗? 题意即找出数组中超过一半的数。 最直接的方法是对所有ID排序,然后再扫描一遍排好的ID列表,统计各个ID出现的次数,若某个ID次数超过总数的一半则输出这个ID,这个算法的时间复杂度为O(N * log2N + N)。 但事实上,若ID列表有...

dhe56357的博客 189

从冰棍到铸钢:手把手用Fluent融化凝固模型模拟3个不同场景(含案例设置对比)

本文深入探讨了Fluent融化凝固模型在冰棍融化、巧克力涂层凝固和钢铁连铸三个不同场景中的应用。通过详细的参数设置和案例对比,帮助工程师掌握相变模拟的核心技巧,提升工业级CFD分析的精度和效率。

weixin_42522953的博客 471

RISC-V CPU设计(三)---多周期CPU的设计与实现

基本情况 本多周期CPU支持RV32I指令集(fence,ecall,ebreak除外),已通过部分指令的测试,如代码有bug,欢迎指出。 模块划分 代码将CPU划分为以下几个模块: 1.控制单元:ControlUnit 用于产生控制信号,是CPU的大脑,指挥中枢。 2.分支决策单元:BranchUnit 用于决定B型指令是否发生跳转 3.立即数单元:ImmUnit 用于从指令中解析出立即数. 4.寄存器堆:RegisterFile RISC-V的32个寄存器,其中x0寄存器恒为0,不可更改。 5.指令存储

qq_40268672的博客 5542

2.3 寻找发帖水王

题目:水王发帖的数量超过总贴数的一半,已知所有帖子的发帖ID列表,请快速找出水王ID 思路:除了最为直观的排序法+遍历外,突破口在发帖总数超一半的这个点上。水王id和其它的id可以相互抵消,最后留下的肯定是水王的id。只需要O(n)。 1 int findHalfId(const int ids[],int len){ 2 3 int i,candidate...

weixin_30521649的博客 140

编织数据的实时脉络——构建基于MySQL的数据编织平台,实现实时数据治理

除了上述基本设置外,我们还可以根据实际应用场景自定义一些特定的监控项目。例如,对于某些高并发读写的表,可能需要特别关注它们的锁等待时间和回滚段使用率;而对于涉及到跨库关联查询的操作,则应当着重检查网络延迟及缓存命中率等因素。-- 获取InnoDB行级锁等待情况-- 统计各表的缓存命中率这段SQL脚本不仅展示了如何查询InnoDB引擎下的锁争用状况,还介绍了计算表级别缓存命中率的方法,有助于深入理解系统的运行状态。

墨夶的博客 1789

寻找发帖“水王”

原文链接:http://www.cnblogs.com/sooner/archive/2013/04/02/2996589.html 题目是这样描述的:“水王”发帖的数目超过了所有帖子的一半,有各个帖子的作者ID,求这个水王的ID 编程之美给出了两种巧妙的解法 解法一:ID排序,那么ID列表中的N/2项即为要找的ID(还要排序,时间复杂度为O(NlogN)) 解法二:通过查

Jarvan_Song的博客 587

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

[编程之美]寻找水王

View Code 1 //有n个数表示ID,其中有一个ID出现的次数超过总数n的一半,求出这是哪个ID 2 3 //Solution1:对n个数进行排序,然后再扫描一遍排好序的ID列表,统计各个ID出现的次数,如果某个ID出现的次数超过总数n的一半,那么就输出这个ID 4 5 //Solution2:对n个数进行排序,则这个有序列表中的第n/2项一定会是要找的ID 6 7 //S...

weixin_30945039的博客 67

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

寻找水王--寻找序列中出现次数大于一半的元素

O(n+logN): 排序后+统计 O(1+lonN):排序后+查找中间元素(大于一半的元素一定出现在有序序列的中点) O(N):不同元素两两相消 View Code 1 #include <iostream> 2 3 using namespace std; 4 5 6 int find(int array[], int N) 7 ...

weixin_33734785的博客 83

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

编程之美总结

2.1求二进制中1的个数 (1)

码迹天涯的专栏 526

(1.2.4.1)数组的相关算法

1-递归实现数组求和 2-一个变量二维数组 3-递归判断数组递增 4-排序数组中查找指定元素重复出现次数 5-无序数组的交集 6-有序数组的交集 7-重复次数最多的元素 8-On时间复杂度中寻找数组中出现一半以上的数 9-求解存放连续数的数组的唯一重复元素时间复杂度On 10-出现奇数次的元素 11-数组中符合条件的数组对个数 12-数组验证有无重复元素 13-使得数组左边全为奇数右边为偶数 14-

JAVA成长之路 960

分治思想及快排双指针分区的应用

第K小的数字 现有一个包含n个整数(1<=n<=900000)的无序序列(保证序列内元素各不相同), 输入一个整数k(1<=k<=n),请用较快的方式找出该序列的第k小数并输出。 Input 多组输入。 首先输入一个数据组数T(1<=T<=100) 接下来是T组数据。 每组数据有两行。 第一行先输入两个整数,n和k。 接下来是一行输入n个由空格分开的互不相同的整数num(1<=num<=90000000)。 Output 对于每组数据,输出该组数据中第k小的数

JohnnyLin 401

《编程之美》笔记

第1章 游戏之乐----游戏中碰到的题目 第2章 数学之魅----数字中的技巧  2.2 不要被阶乘吓倒   问题2:求N!的二进制表示中最低位1的位置。   方法一:一个数字k如果乘以2,则其二进制就会左移一位。那么N!的质因子分解中的2的个数就是N!的二进制中有多少个后缀零。具体实现与N!后缀零一样。 1 int lowestOne...

weixin_30848775的博客 139

第二章 :查找与排序---------递归、查找与排序补充

递归设计经验: ①、找重复(子问题) ②、找重复中的变化量-&gt;参数 ③、找参数变化趋势-&gt;设计出口 求n的阶乘: *找重复:n*(n-1)的阶乘,求n-1的阶乘是原问题的重复(规模更小)----子问题 *找变化:变化的量应该作为参数 *找边界 :出口 #include&lt;iostream&gt; using namespace std; /* **求n的...

Curtis’Blog 850

第一章:位运算-------输入浮点数,输出对应二进制数

第一章:位运算-------输入浮点数,输出对应二进制数 思想: 乘二取整,不需要反转。 #include&lt;iostream&gt; //#include&lt;algorithm&gt; using namespace std; int main(){ double input; cin&gt;&gt;input; string decimal=""; wh...

Curtis’Blog 544

第一章:位运算-------出现k次与出现1次

第一章:位运算-------出现k次与出现1次 问题: 数组中只有一个数出现了一次,其他的数都出现了k次,请输出只出现1次的数。 知识点: 2个相同的2进制数,做不进位加法,结果为0; 10个相同的10进制数,做不进位加法,结果为0; k个相同的k进制数,做不进位加法,结果为0; 思路: 将这些数,全部转换为k进制数,然后做不进位加,最后将结果转换为十进制数。 ...

Curtis’Blog 502

第四章:多维数组和矩阵 ------------- 4.4 找出边界为1的最大子方阵

找出边界为1的最大子方阵: 1、未优化的题解:(复杂度较高) //伪代码 max(A,N){ int n=N; while(n&gt;0){ for(i from 0 to N-1){ if(i+n&gt;N) break; l3: for(j from 0 to N-1){ if(j+n&gt;N) break; //i,...

Curtis’Blog 469
上一篇: 第三章:查找与排序(下)----------- 3.10 实战解题_哪个数字超过了一半?
下一篇: 第三章:查找与排序(下)----------- 3.12 实践_最小可用id是多少
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值