zoukankan      html  css  js  c++  java
  • 【LeetCode】169

    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.

     Solution 1: 使用map计数

     1 class Solution {
     2 public:
     3     int majorityElement(vector<int>& nums) {    //runtime:32ms
     4         map<int, int> nums_count;
     5         vector<int>::iterator iter=nums.begin();
     6         
     7         while(iter!=nums.end()){
     8             ++nums_count[*iter];
     9             iter++;
    10         }
    11         
    12         int n=nums.size();
    13         
    14         map<int, int>::iterator ite=nums_count.begin();
    15         //int max=ite->second;
    16         while(ite!=nums_count.end()){
    17             if(ite->second>n/2){
    18                 return ite->first;
    19             }
    20             ite++;
    21         }
    22     }
    23 };

    Solution 2: 每找出两个不同的element就成对删除,最后可能剩两个元素或一个元素,必定都是所求

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

    扩展到⌊ n/k ⌋的情况,每k个不同的element进行成对删除

  • 相关阅读:
    LeetCode OJ--Sort Colors
    LeetCode OJ--Single Number II **
    LeetCode OJ--Single Number
    LeetCode OJ--Subsets II
    LeetCode OJ--ZigZag Conversion
    3ds Max学习日记(三)
    3ds Max学习日记(二)
    3ds Max学习日记(一)
    PokeCats开发者日志(十三)
    PokeCats开发者日志(十二)
  • 原文地址:https://www.cnblogs.com/irun/p/4722615.html
Copyright © 2011-2022 走看看