Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊
n/2 ⌋ times.
You may assume that the array is non-empty and the majority element always exist in the array.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int majorityElement(vector<int>& nums) {
int m = nums[0];
int count = 1;
for(int i = 1; i < nums.size(); i++)
{
if(nums[i] == m)
{
count++;
}
else
{
count--;//与该数的统计抵消
}
if(count < 0) //当count<0时 说明该数目前不能达到数目有n/2的要求 majority应至少剩余一个以上
{
m = nums[i];
count = 1;
}
}
return m;
}
另记录下用hash的方法作为参考:[leetcode-169]Majority Element(java) - 博客频道 - youkuaiyun.com http://blog.youkuaiyun.com/zdavb/article/details/47837017
public class Solution
{
public int majorityElement(int[] nums) {
HashMap<Integer,Integer> maps = new HashMap<>();
int val = 0;
for(int i = 0;i<nums.length;i++){
val = nums[i];
if(!maps.containsKey(val))
maps.put(val,0);
int num = maps.get(val)+1;
maps.replace(val,num);
if(num>nums.length/2)
break;
}
return val;
}
}
本文介绍两种寻找多数元素的算法实现,一种是通过遍历数组并使用计数的方式确定多数元素,另一种则是利用哈希表记录每个元素出现的次数来找出多数元素。这两种方法都能有效地解决多数元素查找的问题。
2724

被折叠的 条评论
为什么被折叠?



