首页 > 编程语言 > 详细

leetcode 1517 数组中出现次数超过一半的数字

时间:2020-03-01 20:04:57      阅读:60      评论:0      收藏:0      [点我收藏+]

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字(假设这个数字为k)。

O(n)做法:设置一个target,如果数组的中值等于target,则count++,否则count--,若count为0则更新这个值。

那么我们假设最差的情况,每次count为0时至少有一半的k与其他的不是k的进行抵消,那么最后一定还会存在一个k可以被标记为target。

 1 class Solution {
 2 public:
 3     int majorityElement(vector<int>& nums) {
 4       int target;
 5       int count=0;
 6       for(int i=0;i<nums.size();i++)
 7       {
 8           if(count==0)
 9           {
10               target=nums[i];
11           }
12           if(nums[i]==target)
13            count++;
14            else
15            count--;
16       }
17       return target;
18     }
19 };

 

leetcode 1517 数组中出现次数超过一半的数字

原文:https://www.cnblogs.com/Carits/p/12391546.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!