zoukankan      html  css  js  c++  java
  • 摩尔投票解决多数元素问题

    今天在做算法题的时候学习到了一种新的解题方法--摩尔投票法

    原题是leetcode上的多数元素问题;

    "给定一个大小为 的数组,找到其中的多数元素.多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素"

    解题思路是这样的,暂时选定第一个元素为候选人,给一个初始票数为1,遍历数组每当遇到与候选人相同的数,票数则加一,如果不相同则减一.如果等于0则更换下一个候选人,初始票数为1

    遍历完成之后剩下的那个候选人就是这个数组里面的多数元素,因为题目里面规定了多数元素在数组中出现的次数一定是大于n/2的,所有最后候选人的票数一定是大于等于1的(如果数组中存在多数元素);

     1 class Solution {
     2     public int majorityElement(int[] nums) {
     3         int count = 1;
     4         int candidate = nums[0];
     5         for (int i = 1; i < nums.length; i++){
     6             if (nums[i] == candidate) {
     7                 count++;
     8             } else if (--count == 0) {
     9                 candidate = nums[i];
    10                 count = 1;
    11             }
    12         }
    13         return candidate;
    14     }
    15 }
  • 相关阅读:
    浅析跨域请求
    python虚拟环境--virtualenv
    centos7下使用yum安装pip
    centos下python安装与虚拟环境配置
    ES6基础语法
    CCI_chapter 19 Moderate
    CCI_chapter 16 Low level
    CCI_chapter 13C++
    CCI_chapter 8 Recurision
    LeetCode_Generate Parentheses
  • 原文地址:https://www.cnblogs.com/lkylin/p/14241841.html
Copyright © 2011-2022 走看看