编程之美: 第二章 数字之魅 2.3_1寻找发帖超过总帖1/4的水王

这篇博客探讨了如何从ID列表中找出发帖数超过总数1/3和1/4的水王ID。通过算法实现,分别处理两种情况:两个和三个水王ID,并给出了对应的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
有3个发帖很多的ID,他们发帖数目都超过了帖子总数目N的1/4,你能从ID列表中找出它们的ID吗?
先考虑2个发帖很多的ID,他们发帖数目超过帖子总数目的1/3,每次删除三个不一样的便可

输入:(针对2两个水王)
9
1 2 3 2 3 2 3 2 3
输出:
2 3

输入:(针对3个水王)
16
1 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4

输出:
2 3 4
*/

/*
关键:
1 		if(iRet1 == pArr[i])//如果当前是水王,则次数累加;如果次数为0,重新赋值次数,如果不是,全部次数减1
		{
			iTimes1++;
		}
2 		else if(iTimes1 == 0)//如果次数为0,重新赋值次数
		{
			iTimes1 = 1;
			iRet1 = pArr[i];
3 		else
		{
			iTimes1--;
			iTimes2--;
			iTimes3--;
*/
#include <stdio.h>

const int MAXSIZE = 10000;
const int INF = 1000000000;

void thirdTimesNum(int* pArr,int iLen)
{
	int iRet1 = INF,iRet2 = INF;
	int iTimes1 = 0,iTimes2 = 0;
	for(int i = 0 ; i < iLen ; i++)
	{
		if(iTimes1 == 0)
		{
			if(iRet2 == pArr[i])//这个绝对有问题
			{
				iTimes2++;
			}
			else
			{
				iRet1 = pArr[i];
				iTimes1++;
			}
		}
		else if(iTimes2 == 0)
		{
			if(iRet1 == pArr[i])
			{
				iTimes1++;
			}
			else
			{
				iRet2 = pArr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值