zoukankan      html  css  js  c++  java
  • 169. Majority Element

    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.

    找到一堆数中出现次数>n/2 的那个数。

    普通解法。可能用map 或者二分,但是仔细想一想可以用o(n)的解法。

    其实就是求这堆数的众数。

    class Solution {
    public:
        int majorityElement(vector<int>& nums) {
            int n = nums.size();
            int can = nums[0];
            int cnt = 1;
            for (int i = 1; i < n; ++i) {
                if (nums[i] == can) cnt++;
                else {
                    cnt--;
                    if (cnt == 0) can = nums[i],cnt = 1;
                }
            }
            return can;
        }
    };

    .

  • 相关阅读:
    HDU 5247
    HDU 4965
    CodeForces 445B
    HDU 5835
    CodeForces 731C
    HDU 5783
    CodeForces 660D
    POJ 1631
    HDU 6112
    HDU 5860
  • 原文地址:https://www.cnblogs.com/pk28/p/7238990.html
Copyright © 2011-2022 走看看