当前位置: 首页> 健康> 养生 > appsgeyser_自己怎么优化网站排名_深圳网站seo哪家快_百度搜索引擎的网址是多少

appsgeyser_自己怎么优化网站排名_深圳网站seo哪家快_百度搜索引擎的网址是多少

时间:2025/8/27 10:49:01来源:https://blog.csdn.net/Sti1lWater/article/details/146639530 浏览次数:0次
appsgeyser_自己怎么优化网站排名_深圳网站seo哪家快_百度搜索引擎的网址是多少

题目描述

主要元素

思路

这种找**“数组中出现次数超过一半的元素”**的题目的算法是固定的 – 摩尔投票法
如果存在这么一个数,他的出现次数超过数组大小的一半,也就是说,他出现的次数之和大于其他元素的出现次数之和
那么将这个数和其他数两两抵消之后,最后剩余的数的集合一定是它本身。
算法思路:
设置一个候选人(数组中出现次数超过一半的元素)
遍历数组中的元素

  1. 如果此时候选人的集合大小为 0 0 0,那么说明此时没有候选人,所以当前元素就可以担任候选人
  2. 如果当前元素等于候选人,候选人集合大小加一,否则减一
for(auto &x : nums) {if(count == 0)  candidate = x;if(x ==candidate)   count ++ ;else    count -- ;}

另外需要注意,如果数组中不存在这个数,那么最终的结果是随机的。还有就是摩尔投票法不能寻找众数!!!

代码

class Solution {
public:int majorityElement(vector<int>& nums) {// 先用摩尔投票法选出出现次数最多的数,在判断这个数是否合法int candidate = -1, count = 0;int n = nums.size();for(auto &x : nums) {if(count == 0)  candidate = x;if(x == candidate)  count ++ ;else    count -- ;}cout << "res: " << candidate << endl;count = 0;for(auto &x : nums) {if(x == candidate)  count ++ ;}return count > n / 2 ? candidate : -1;}
};
关键字:appsgeyser_自己怎么优化网站排名_深圳网站seo哪家快_百度搜索引擎的网址是多少

版权声明:

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

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

责任编辑: