ProDeveloperTutorial.com

教程和编程解决方案
菜单
  • Shell脚本
  • 系统设计
  • Linux系统编程
  • 4g LTE
  • 编码问题
  • C
  • C ++
  • DSA
  • GIT

给定一个数组,找到多数元素,C ++解决方案

前开发者教程 三月5,2019

多数元素是重复一半以上的元素。

Example:
[1, 2, 3, 4, 4, 4, 4, 4, 5]
Output: 4

元素总数为9,并且将4重复5次。它已经重复了一半以上的时间。

我们可以通过使用 摩尔投票算法。如果存在多数元素,则此算法将起作用。如果没有多数元素,您将得到错误的结果。

以下是该算法的工作原理:

  1. 将第一个元素视为most_element,并使用count变量在每次遇到该变量时递增。
  2. 如果当前索引处的变量与major_element不同,则递减计数器。
  3. 如果计数器为0,则将当前元素视为多数元素,然后继续遍历数组。
  4. 最后,结果保存在“ majority_element”中。
  5. 这也将适用于未排序的数组。

在解决方案中,我给出了调试语句,以便您可以了解确切的流程。

C ++解决方案

#include<iostream>
#include<vector>
#include<string.h>

using namespace std;

int majority_element_moore_voting_algorithm(vector<int> &num) 
{

	int major=num[0];
	int count = 1;

	cout<<"============start debugging============"<<endl;
	cout<<"Step 1: majority element = "<<major<<" count = "<<count<<endl;
	for(int i=1; i<num.size();i++)
	{
	cout<<"Step 2: majority element = "<<major<<" count = "<<count<<" num = "<<num[i]<<endl;

		if(count==0)
		{

			count++;
			major=num[i];
	cout<<"Step 3: majority element = "<<major<<" count = "<<count<<" num = "<<num[i]<<endl;

		}
		else if(major==num[i])
		{
			count++;
	cout<<"Step 4: majority element = "<<major<<" count = "<<count<<" num = "<<num[i]<<endl;

		}
		else
		{ 
			count--;
	cout<<"Step 5: majority element = "<<major<<" count = "<<count<<" num = "<<num[i]<<endl;

		}
	}

	cout<<"============end debugging============"<<endl;

	return major;
}



int main()
{
	vector<int> number = {1, 2, 3, 4, 5, 5, 5, 5, 5, 5, 6};
	int majority_element = majority_element_moore_voting_algorithm(number);
	cout<<"The majority element is "<<majority_element<<endl;

	return 0;
}

输出:

============start debugging============

Step 1: majority element = 1 count = 1

Step 2: majority element = 1 count = 1 num = 2

Step 5: majority element = 1 count = 0 num = 2

Step 2: majority element = 1 count = 0 num = 3

Step 3: majority element = 3 count = 1 num = 3

Step 2: majority element = 3 count = 1 num = 4

Step 5: majority element = 3 count = 0 num = 4

Step 2: majority element = 3 count = 0 num = 5

Step 3: majority element = 5 count = 1 num = 5

Step 2: majority element = 5 count = 1 num = 5

Step 4: majority element = 5 count = 2 num = 5

Step 2: majority element = 5 count = 2 num = 5

Step 4: majority element = 5 count = 3 num = 5

Step 2: majority element = 5 count = 3 num = 5

Step 4: majority element = 5 count = 4 num = 5

Step 2: majority element = 5 count = 4 num = 5

Step 4: majority element = 5 count = 5 num = 5

Step 2: majority element = 5 count = 5 num = 5

Step 4: majority element = 5 count = 6 num = 5

Step 2: majority element = 5 count = 6 num = 6

Step 5: majority element = 5 count = 5 num = 6

============end debugging============

The majority element is 5

 

 

 

该网站上可用的教程列表:

C编程20+章C ++编程80+章
100多个编码问题数据结构和算法85+章
系统设计20+章Shell脚本编写12章
4g LTE 60+章节最常见的编码问题
5G NR 50+章Linux系统编程20+章
分享
电子邮件
鸣叫
领英
Reddit
绊倒
Pinterest的
上一篇文章
下一篇

关于作者

前开发者教程

每天我们都会讨论竞争性编程问题,请加入我们的网站:   电报频道

ProDeveloperTutorial.com

教程和编程解决方案
版权© 2020 ProDeveloperTutorial.com
从以下课程获得热门课程: 教育性的
<em class="y80jHd1"></em>
<audio id="u5JMTXc" class="u7EOit8"><area id="k6kL6HR" class="kukQqmK"></area></audio>


  • <ul id="aCcLfKT" class="ap5tlSN"><dir id="eKOdIrN"></dir></ul>

    <center id="m8nXSRd"></center>