欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > 力扣—169.多数元素

力扣—169.多数元素

2024/11/30 12:29:33 来源:https://blog.csdn.net/lllay_/article/details/143866695  浏览:    关键词:力扣—169.多数元素

169.多数元素

题目:

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例:

示例 1:

输入:nums = [3,2,3]
输出:3

示例 2:

输入:nums = [2,2,1,1,1,2,2]
输出:2

提示:

  • n == nums.length
  • 1 <= n <= 5 * 104
  • -109 <= nums[i] <= 109

整体思路:

        本题说明一定会有多数元素(大于数组一半的数量),遍历数组,不同的直接相互消掉(就算有1112222这种情况,多数元素也会剩下一个也就是输出值)

        有相同的值标记+1,没有相同的标记-1,如果减到0了更新对比值(答案)标记+1继续往后对比。留到最后的就是多数元素

代码:

class Solution {
public:int majorityElement(vector<int>& nums) {int res = -1;//对比值(答案)int flage = 0;//标记for(int i = 0 ; i < nums.size(); i++){if(flage == 0){//1.将对比值(答案)更新为数组第一个元素//2.将对比值(答案)更新为(不同的消除掉)元素的下一个元素//比如1112222这个例子flage再为0就是111222都被消除掉对比值(答案)更新为最后一个2res = nums[i];flage++;//将标记+1下一次不进入这个if,直接去对比下一个元素}else if(res == nums[i]){//对比相同flage++;//标记+1,不用去of更新对比值(答案)接着和下一个对比}else{flage--;//对比不相同,标记-1,不记录元素(也就是消除),让当前对比值(答案)与下一个元素接着比直到flage为0就更新对比值(答案)接着比}}return res;//答案}
};

版权声明:

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

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