当前位置: 首页> 健康> 科研 > 品牌建设与营销管理_前端毕业设计题目可以做哪些_东莞seo优化_seo网站结构优化

品牌建设与营销管理_前端毕业设计题目可以做哪些_东莞seo优化_seo网站结构优化

时间:2025/7/11 23:16:00来源:https://blog.csdn.net/weixin_66151870/article/details/145649893 浏览次数:0次
品牌建设与营销管理_前端毕业设计题目可以做哪些_东莞seo优化_seo网站结构优化

数组中出现次数超过一半的数字_牛客题霸_牛客网

描述

给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。

例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。

数据范围:n≤50000n≤50000,数组中元素的值 0≤val≤100000≤val≤10000

要求:空间复杂度:O(1)O(1),时间复杂度 O(n)O(n)

输入描述:

保证数组输入非空,且保证有解

示例1

输入:

[1,2,3,2,2,2,5,4,2]
返回值:
2

示例2

输入:

[3,3,3,3,2,2,2]
返回值:
3

示例3

输入:

[1]
返回值:
1

哈希

class Solution {
public:int MoreThanHalfNum_Solution(vector<int> numbers) {map<int, int> mp;int n = numbers.size();for(auto e : numbers){mp[e]++;if(mp[e] > n/2)return e;}return 0;}
};

排序

class Solution {
public:int MoreThanHalfNum_Solution(vector<int> numbers) {sort(numbers.begin(), numbers.end());return numbers[numbers.size() / 2];}
};

 (Boyer-Moore 投票算法)

想象一下,如果把这些数字当做人种,一个数字和另外一个数字打了起来,同归于尽。最后剩下的是不是人数最多的那种人。这里要满足一个条件:某类人的数目一定要大于总人数的一半。

算法步骤:我们选择输入数组中第一个元素作为候选元素candidate,并设置其出现次数为count=1。随后遍历数组。当遇到与candidate相同的元素,count+1;不同的元素,count-1。当count为0的时候,选择下一个元素为候选元素,并且置count=1。遍历到数组的最后,剩下的candidate就是要求的结果。

class Solution {
public:int MoreThanHalfNum_Solution(vector<int>& numbers) {int candidate = numbers[0];int count = 1;for(int i = 1; i < numbers.size(); i++){if(numbers[i] == candidate)count++;elsecount--;if(count == 0){candidate = numbers[i+1];}}return candidate;}
};

关键字:品牌建设与营销管理_前端毕业设计题目可以做哪些_东莞seo优化_seo网站结构优化

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: