[C语言]n个整型元素的数组,一个元素出现次数超过n/2

思路:

定义两个指针i和j,i的起始位置是第一个元素,j的起始位置是i之后的一个元素。

1.首先比较a[i]和a[j]是否相同,如果相同,将k(i指向的目标元素出现次数计数器)+1。接着j+1指向下一个元素,并判断a[i]和a[j]是否相同。

2.遍历数组后,进行对k的值判断,如果k>n/2,则将a[i]的值放入b,并打断循环输出b的值。如果k<n/2,则将k的值归零,i+1。并重复第一个步骤。

#include<stdio.h>
#include<stdlib.h>

int main()
{
	int i=0,j,b,k=0,len;
	int a[10] = { 3,1,2,3,3,1,3,1,3,3 };
	len = strlen(a);
	for (; i < sizeof(a) / sizeof(int); i++)
	{
		j = i + 1;
		for (;j < sizeof(a) / sizeof(int);j++)
		{
			if (a[j] == a[i])
			{
				k++;
			}
		}
		if (k > len / 2)
		{
			b = a[i]; break;
		}
		else {
			k = 0;
		}
	}
	printf("%d\n", b);
	system("pause");
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值