leetcode - majority elements

原创 2015年07月10日 17:01:40

leetcode - majority elements

给定size 为n的数组,查找出主元素,就是出现次数大于n/2次的元素。

1.

 int majorityElement(vector<int> &num) { 
std::map<int, int> im; 
for (int i = 0; i < num.size(); ++i){ 
map<int, int>::iterator it = im.find(num[i]);
 if (it == im.end()) 
{ im[num[i]] = 1; } 
else 
{ im[num[i]]++; } 
if (im[num[i]] > num.size()/2) 
{ return num[i]; } }
 return 0;}
2.
class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int ret = nums[0];
        int count = 1;
        for(int i = 1; i < nums.size(); i ++)
        {
            if(nums[i] == ret)
                count ++;
            else
            {
                count --;
                if(count == 0)
                {
                    ret = nums[i];
                    count = 1;
                }
            }
        }
        return ret;
    }
};
3. Moore's voting algorithm
int majorityElement(vector<int> &num) {    
int majorityIndex = 0;    
for (int count = 1, i = 1; i < num.size(); i++) 
{        
num[majorityIndex] == num[i] ? count++ : count--;        
if (count == 0) {           
 majorityIndex = i;            
count = 1;      
  }    
}    
return num[majorityIndex];
}
4.
class Solution {
 2 public:
 3     int majorityElement(vector<int> &num) {
 4 
 5         int count = 0;
 6         
 7         for(;;) {
 8             if(num.size() == 1)
 9                 return num[0];
10             else    {
11                 int i = rand() % (num.size() - 1);
12                 for(int j = 0; j < num.size(); j++) {
13                     if(num[j] == num[i])
14                         count++;
15                 }
16                 if(count > (num.size() / 2))
17                     return num[i];
18                 else    {
19                     count = 0;
20                     continue;
21                 }
22             }
23         }
24     }
5.
 int my_cmp(int a,int b)  
{      
return a > b; 
 }    
int Solution::majorityElement(vector<int> &num) 
 {      
sort(num.begin(),num.end(),my_cmp);     
 return num[num.size()/2];
  }  

leetcode 229: Majority Element II

leetcode 229: Majority Element II python java c++
  • xudli
  • xudli
  • 2015年07月07日 04:40
  • 11574

LeetCode169:Majority Element

Given an array of size n, find the majority element. The majority element is the element that appear...
  • u012501459
  • u012501459
  • 2015年07月09日 19:29
  • 1549

【LeetCode-面试算法经典-Java实现】【169-Majority Element(主元素)】

【169-Majority Element(主元素)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】代码下载【https://github.com/Wang-Jun-Chao】原...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月23日 06:38
  • 4758

leetcode229-Majority Element II(数组中出现最多的数II)

问题描述:Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The al...
  • will130
  • will130
  • 2016年04月02日 20:07
  • 312

LeetCode229:Majority Element II

Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The alg...
  • u012501459
  • u012501459
  • 2015年07月29日 15:13
  • 1025

Leetcode (4) Majority Element

题目描述Given an array of size n, find the majority element. The majority element is the element that ap...
  • angelazy
  • angelazy
  • 2015年04月11日 16:08
  • 1878

169. Majority Element [easy] (Python)

题目链接https://leetcode.com/problems/majority-element/题目原文 Given an array of size n, find the majorit...
  • coder_orz
  • coder_orz
  • 2016年05月14日 20:04
  • 1458

LeetCode169. Majority Element分治法

题意:求一个序列中出现次数多于一半的元素。 方法很多,可以排序、哈希表、分治等等。...
  • wmdshhz0404
  • wmdshhz0404
  • 2016年09月21日 00:07
  • 611

leetcode169---Majority Element(数组中出现次数超过一半的数)

问题描述:Given an array of size n, find the majority element. The majority element is the element that a...
  • will130
  • will130
  • 2016年01月20日 09:53
  • 675

LeetCode 169. Majority Element 题解(C++)

Given an array of size n, find the majority element. The majority element is the element that appear...
  • prayyojay
  • prayyojay
  • 2016年10月19日 14:41
  • 294
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode - majority elements
举报原因:
原因补充:

(最多只允许输入30个字)