Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋
times. The algorithm should run in linear time and in O(1) space.
解题思路:
《编程之美》寻找发帖水王的原题,两次遍历,一次遍历查找可能出现次数超过nums.length/3的数字,(出现三次不同的数即抛弃),第二次验证即可。
JAVA实现如下:
public List<Integer> majorityElement(int[] nums) {
List<Integer> list = new ArrayList<Integer>();
if (nums == null || nums.length == 0)
return list;
int left = nums[0], right=nums[0];
int count1 = 1, count2 = 0;
for (int i = 1; i < nums.length; i++) {
if (nums[i] == left)
count1++;
else if(right==left){
right=nums[i];
count2=1;
}
else if(right==nums[i])
count2++;
else if(count1==0){
left=nums[i];
count1=1;
}
else if(count2==0){
right=nums[i];
count2=1;
}
else{
count2--;
count1--;
}
}
count1=0;count2=0;
for(int i=0;i<nums.length;i++){
if(nums[i]==left)
count1++;
else if(nums[i]==right)
count2++;
}
if(count1>nums.length/3)
list.add(left);
if(count2>nums.length/3)
list.add(right);
return list;
}
Java for LeetCode 229 Majority Element II的更多相关文章
-
[LeetCode] 229. Majority Element II 多数元素 II
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. Note: The a ...
-
leetcode 229 Majority Element II
这题用到的基本算法是Boyer–Moore majority vote algorithm wiki里有示例代码 1 import java.util.*; 2 public class Majori ...
-
LeetCode 229. Majority Element II (众数之二)
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorit ...
-
leetcode 229. Majority Element II(多数投票算法)
就是简单的应用多数投票算法(Boyer–Moore majority vote algorithm),参见这道题的题解. class Solution { public: vector<int& ...
-
(medium)LeetCode 229.Majority Element II
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorit ...
-
leetcode 169. Majority Element 、229. Majority Element II
169. Majority Element 求超过数组个数一半的数 可以使用hash解决,时间复杂度为O(n),但空间复杂度也为O(n) class Solution { public: int ma ...
-
【LeetCode】229. Majority Element II
Majority Element II Given an integer array of size n, find all elements that appear more than ⌊ n/3 ...
-
LeetCode OJ 229. Majority Element II
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorit ...
-
【LeetCode】229. Majority Element II 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 hashmap统计次数 摩尔投票法 Moore Vo ...
随机推荐
-
myeclipse打红叉
因为还没有告诉myeclipse去验证它.解决方法,选中js文件,右键Myeclipse--ManaValidation--ExcludeResource--(选中全部或者那个js)--OK
-
第十一篇 Material Status设置与测试,制药业案例一则
详见,http://bbs.erp100.com/thread-273173-1-1.htmlMaterial Status不同于Item Status.Item Status用于统一控制Item的s ...
-
MyEclipse7.0破解下载
MyEclipse7.0 下载地址:downloads.myeclipseide.com/downloads/products/eworkbench/7.0M1/MyEclipse_7.0M1_E3. ...
-
jquery禁用右键单击、F5刷新
1.禁用右键单击功能 $(document).ready(function() { $(document).bind("contextmenu",function(e) { ale ...
-
基于定位下拉框或者需要点击link才显示的下拉框,二次定位与多次定位实现的实际效果区别
还是基于上次那个练习的后续出现的思考,http://www.cnblogs.com/8013-cmf/p/6555790.html 界面: 源码: 写法如下: 继续解释这两种的区别: 1.其实基于定 ...
-
Express 学习笔记纯干货(Routing、Middleware、托管静态文件、view engine 等等)
原始文章链接:http://www.lovebxm.com/2017/07/14/express-primer/ 1. Express 简介 Express 是基于 Node.js 平台,快速.开放. ...
-
第一章 Python基本语法元素分析(二)
1.3 实例1:温度转换 根据华氏和摄氏温度定义,利用转换公式如下: C=(F-32)/1.8 F=C*1.8+32 代码如下: 运行结果: 1.4 Python程序语法元素分析 注释:不被程 ...
-
解决pycharm输入法不跟随的方法
先上图,这个pycharm编辑器默认条件下输入中文时输入法框的状态 这个是更改后的状态 修改方法就是将android studio中的jre目录 拷贝至 下,并更改名称为jre64 重新启动pycha ...
-
红米Note 7 Pro在印度首销迅速售罄
3月13日消息,红米Note 7 Pro在印度率先发售. 小米印度业务负责人Manu Kumar Jain发推特表示,红米Note 7 Pro开售几秒钟就被抢光,我们的工厂正在加班加点工作,全力以赴提 ...
-
JavaScript 高阶函数
高阶函数的英文叫Higher-order function ,什么是高阶函数呢>? JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接 ...