LeetCode OJ 之 Majority Element II(大部分元素2)

原创 2015年07月09日 08:25:53

题目:

Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorithm should run in linear time and in O(1) space.

给一个含有n个整数的数组,找出所有出现次数超过 n/3 次的元素,时间复杂度O(n) ,空间复杂度O(1).

思路:

结果最多出现两个数字。思路类似http://blog.csdn.net/u012243115/article/details/42076523.

代码:

class Solution {
public:
    vector<int> majorityElement(vector<int>& nums) 
    {
        int times1 = 0 , times2 = 0;
        int num1 = 0 , num2 = 0;
        int len = nums.size();
        vector<int> result;
        for(int i = 0 ; i < len ; i++)
        {
            if(times1 == 0 || nums[i] == num1)
            {
                times1++;
                num1 = nums[i] ;
            }
            else
                if(times2 == 0 || nums[i] == num2)
                {
                    times2++;
                    num2 = nums[i];
                }
                else
                {
                    times1--;
                    times2--;
                }
        }
        times1 = 0 , times2 = 0;
        for(int j = 0 ; j < len ; j++)
        {
            if(nums[j] == num1)
                times1++;            
            if(num1 != num2 && nums[j] == num2)
                times2++;
        }
        if(times1 > len/3)
            result.push_back(num1);
        if(times2 > len/3)
            result.push_back(num2);
        return result;
    }
};


版权声明:转载请注明出处。

leetcode 229: Majority Element II

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

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
  • 1022

LeetCode 229. Majority Element II(众数II)

原题网址:https://leetcode.com/problems/majority-element-ii/ Given an integer array of size n, find all ...
  • jmspan
  • jmspan
  • 2016年04月05日 06:28
  • 771

Majority Element && Majority Element II

查找数组的多数元素
  • u013819100
  • u013819100
  • 2015年08月15日 11:06
  • 2677

LeetCode229 MajorityElementII java题解

题目:Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algo...
  • u012249528
  • u012249528
  • 2015年07月01日 20:39
  • 447

LeetCode OJ 之 Majority Element (“大部分”元素)

题目: Given an array of size n, find the majority element. The majority element is the element that ...
  • u012243115
  • u012243115
  • 2014年12月22日 09:58
  • 398

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
  • 1541

229.Majority Element II

Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algori...
  • sjt091110317
  • sjt091110317
  • 2015年07月01日 08:53
  • 954

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

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

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
  • 1874
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode OJ 之 Majority Element II(大部分元素2)
举报原因:
原因补充:

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