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.

思路:

  找到一个数组中出现次数超过一半的数。排序、哈希等方法就不提了,考虑O(n)的复杂度,有一种传说中的摩尔投票算法可用。其实也很简单,初始选第一个元素,依次比对它和其它的元素,若相等则其票数加一,反之则减一,当其票数为0时,更换投票对象为当前的元素,继续执行,最终即可得结果(前提的数组中存在这样的数,否则结果不确定是什么,依赖于元素的摆放顺序)。

C++:

 1 class Solution {
 2 public:
 3     int majorityElement(vector<int> &num) {
 4
 5         int len = num.size();
 6         if(len == 0)
 7             return 0;
 8
 9         int cnt = 0, ret = num[0];
10         for(int i = 0; i < len; i++)
11         {
12             if(cnt == 0)
13             {
14                 ret = num[i];
15                 cnt++;
16             }
17             else
18             {
19                 if(num[i] == ret)
20                     cnt++;
21                 else
22                     cnt--;
23             }
24         }
25         return ret;
26     }
27 };

Python:

 1 class Solution:
 2     # @param {integer[]} nums
 3     # @return {integer}
 4     def majorityElement(self, nums):
 5         ret, cnt = 0, 0
 6
 7         for val in nums:
 8             if cnt == 0:
 9                 ret = val
10                 cnt = 1
11             else:
12                 if ret == val:
13                     cnt = cnt + 1
14                 else:
15                     cnt = cnt - 1
16         return ret
17         

转载于:https://www.cnblogs.com/tjuloading/p/4614397.html

【LeetCode 169】Majority Element相关推荐

  1. 【LeetCode题解】二叉树的遍历

    我准备开始一个新系列[LeetCode题解],用来记录刷题,顺便复习一下数据结构与算法. 1. 二叉树 二叉树(binary tree)是一种极为普遍的数据结构,树的每一个节点最多只有两个节点--左孩 ...

  2. 重复次数最多的 子串_每日算法系列【LeetCode 424】替换后的最长重复字符

    题目描述 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 示例1 输入: s = &quo ...

  3. 【LeetCode - 32】最长有效括号

    给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度. 示例 1: 输入:s = "(()" 输出:2 解释:最长有效括号子串是 " ...

  4. 【leetcode】Majority Element

    题目概述: Given an array of size n, find the majority element. The majority element is the element that ...

  5. 如何给柱状图柱子添加阴影_【LeetCode日记】84. 柱状图中最大的矩形

    题目描述 ` 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的宽度为 1,给 ...

  6. 【LeetCode笔记】253. 会议室 II(Java、偏数学)

    文章目录 题目描述 思路 && 代码 计划里 hot 100 + 剑指Offer 的题目中唯一一道会员题,同时也是最后一道没写的题,刚好今天 leetcode 发了一天会员可以写上-简 ...

  7. 【LeetCode笔记】301. 删除无效的括号(Java、DFS、字符串)

    文章目录 题目描述 思路 && 代码 二刷 题目描述 [所有可能结果]-> [暴力DFS] 思路 && 代码 代码比较长,但是总体思路很清晰. 剪枝:舍弃左括号. ...

  8. 【LeetCode笔记】169. 多数元素(Java、摩尔投票法、哈希表)

    文章目录 题目描述 思路 & 代码 思路一:哈希表 思路二: 摩尔投票法 题目描述 好家伙,这是今天最有意思的题目了 思路 & 代码 思路一:哈希表 先说缺点:空间复杂度O(n) 一次 ...

  9. 【LeetCode 总结】Leetcode 题型分类总结、索引与常用接口函数

    文章目录 零. Java 常用接口函数 一. 动态规划 二. 链表 三. 哈希表 四. 滑动窗口 五. 字符串 六. DFS.BFS 七. 二分法 八. 二叉树 九. 偏数学.过目不忘 and 原地算 ...

最新文章

  1. python导入处理txt文件-python怎么处理txt
  2. 八皇后问题 回溯法hdu2553
  3. python(numpy,pandas6)——pandas数据形式的简介,排序方式sort_index,sort_values
  4. 孩子,你今天有没有提出一个好的问题?
  5. 16年微软/腾讯云/华为云MVP是怎样炼成的
  6. 这个年纪,喜欢你的肉体还会送你包的,原来是......
  7. mysql function 表名作为参数_mysql 常用的分组聚合函数
  8. 云栖专辑 | 阿里开发者们的第6个感悟:享受折磨 1
  9. linux 使用 vim 玩python
  10. 【Linux】五分钟搞定 Linux 文档全部知识,就看这篇文章
  11. 软件开发工作量/费用估算
  12. 苹果iphone手机如何隐藏文件夹名称 iphone隐藏文件夹标题方法图解
  13. 悉尼大学计算机专业本科学费,悉尼大学
  14. 中国计算机学会青年计算机科技论坛
  15. 左岸读书-语不惊人死不休(95)
  16. java角谷_java实现递归设计——数鸭子和角谷定理
  17. routeros php插件,RouterOS的Webfig的使用方法
  18. gitlab 完整部署实例
  19. WinCE 流驱动一步一步来(理论基础)
  20. 关闭单节点oracle,oracle rac 如何正确的删除单个节点的actionlist

热门文章

  1. python安装了怎么使用_Python PyCharm 安装与简单使用
  2. 串口服务器怎么测信号,串口服务器如何调试
  3. keras faster物体检测_URPC 2019水下目标检测竞赛冠军方案:多图像融合增强
  4. 快速云原生化,从数据中心到云原生的迁移实践
  5. 阿里云消息队列 RocketMQ 5.0 全新升级:消息、事件、流融合处理平台
  6. python如何去掉方括号_python从入门到实战外星人入侵
  7. css提取页面元素唯一性_一日一技:爬虫如何正确从网页中提取伪元素?
  8. 具有趣味性的c语言项目,一个有趣的小程序
  9. java利用poi读取excel_java利用POI 读取EXCEL
  10. python2.x和3.x为什么不兼容_Python中使用AES算法(解决Python2.x和3.x下运行不兼容问题)...