网址:https://leetcode.com/problems/majority-element-ii/

参考:https://blog.csdn.net/u014248127/article/details/79230221

摩尔投票算法( Boyer-Moore Voting Algorithm)

 class Solution {
public:
vector<int> majorityElement(vector<int>& nums) {
vector<int> ans;
// 分别是候选人a,候选人b,以及a,b的票数
int ca = , cb = , a = , b = ;
for(int i : nums)
{
if(ca == i) // 如果i和候选人a是同一个,其票数加一
a++;
else if(cb == i) // 同理
b++;
else if(!a) // 如果a的票数为0,说明ca是空出来的。要把ca更新为i
{
ca = i;
a++;
}
else if(!b) // 同理
{
cb = i;
b++;
}
else // 出现了三足鼎立的情况,我们把三人的票数都减一。i就代表第三个人,它的默认票数是1
{
a--;
b--;
}
} // 判断候选人是否是符合要求的结果
a = ;
b = ;
for(int i : nums)
{
if(i == ca)
a++;
else if(i == cb)
b++;
}
// 与题目要求匹配
if(a > nums.size()/)
ans.push_back(ca);
if(b > nums.size()/)
ans.push_back(cb); return ans;
}
};

229. Majority Element II求众数II的更多相关文章

  1. Leetcode#169. Majority Element(求众数)

    题目描述 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] ...

  2. 229 Majority Element II 求众数 II

    给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 你的算法应该在O(1)空间中以线性时间运行. 详见:https://leetcode.com/problems/major ...

  3. leetcode 169. Majority Element 、229. Majority Element II

    169. Majority Element 求超过数组个数一半的数 可以使用hash解决,时间复杂度为O(n),但空间复杂度也为O(n) class Solution { public: int ma ...

  4. 229. 求众数 II

    Q: 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2,3] 输出: [3 ...

  5. Java实现 LeetCode 229 求众数 II(二)

    229. 求众数 II 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2, ...

  6. Leetcode 229.求众数II

    求众数II 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2,3] 输出: ...

  7. [LeetCode] Majority Element II 求众数之二

    Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorit ...

  8. 【刷题-LeetCode】229. Majority Element II

    Majority Element II Given an integer array of size n, find all elements that appear more than ⌊ n/3 ...

  9. 【LeetCode】229. Majority Element II

    Majority Element II Given an integer array of size n, find all elements that appear more than ⌊ n/3 ...

随机推荐

  1. tomcat+nginx实现

    这里采用tomcat安装包 tomcat 版本说明:  9.0.17 nginx   版本说明: 1.14.2 jdk      版本说明:  1.8.0 创建目录 [root@web02 /]# m ...

  2. kibana查询语法 使用教程

    1. 使用双引号包起来作为一个短语搜索: "like Gecko" 2. ? 匹配单个字符; * 匹配0到多个字符 例如:kiba?a, el*search ? * 不能用作第一个 ...

  3. Let'sEncrypt 免费通配符/泛域名SSL证书添加使用教程

    Let'sEncrypt 免费通配符/泛域名SSL证书添加使用教程 通配符证书一般还是比较贵的一般最便宜的通配符证书5.60美元一年,只不过Let'sEncrypt的有效期是3个月,对于一般用户来说基 ...

  4. Gitlab定义安全变量遇到无法转义的字符——感叹号

    我在安全变量(Secret variables)中定义了一个变量,变量值中含有特殊字符感叹号 ! . 然后我在批处理中,引用了该变量,惊奇地发现,变量值中的 ! 丢失了. 我以为是Windows CM ...

  5. IPv4的编址方法

    重难点: 1.IP地址有3位标识符,由ICANN进行分配. 2.两级的IP地址分为 ::={<网络号>,<主机号>}. 3.在同一个局域网上的主机或路由器的IP地址中的网络号必 ...

  6. DB2数据库常用的函数

    1.value函数 语法value(表达式1,表达式2)value函数是用返回一个非空的值,当其第一个参数非空,直接返回该参数的值,如果第一个参数为空,则返回第一个参数的值. eg:表示如果T1.ID ...

  7. 利用phpspider爬取网站数据

    本文实例原址:PHPspider爬虫10分钟快速教程 在我们的工作中可能会涉及到要到其它网站去进行数据爬取的情况,我们这里使用phpspider这个插件来进行功能实现. 1.首先,我们需要php环境, ...

  8. 图像旋转与图像缩放及Matlab代码实现

    本周的作业是自己通过公式编写图像旋转与缩放的代码.今天先通过调用函数的方法来实现. 图像的旋转: A=imread('2.jpg'); J=imrotate(A, 30); subplot(1,2,1 ...

  9. 确定有穷自动机(DFA)的化简(最小化)

    参考博客地址:https://blog.csdn.net/qq_33605778/article/details/80105658

  10. mongodb修改和删除操作

    修改数据修改里面还有查询条件.你要该谁,要告诉 mongo.查找名字叫做小明的,把年龄更改为 16 岁:1 db.student.update({"name":"小明&q ...