博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 229: Majority Element II
阅读量:6581 次
发布时间:2019-06-24

本文共 1020 字,大约阅读时间需要 3 分钟。

Majority Element II

Total Accepted: 3172
Total Submissions: 14746

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.

[思路]

[REFERENCE] http://bookshadow.com/weblog/2015/06/29/leetcode-majority-element-ii/

观察可知。数组中至多可能会有2个出现次数超过 ⌊ n/3 ⌋ 的众数

记变量n1, n2为候选众数; c1, c2为它们相应的出现次数

遍历数组。记当前数字为num

若num与n1或n2同样,则将其相应的出现次数加1

否则,若c1或c2为0。则将其置为1。相应的候选众数置为num

否则,将c1与c2分别减1

最后,再统计一次候选众数在数组中出现的次数,若满足要求,则返回之。

[CODE]

public class Solution {    public List
majorityElement(int[] nums) { // 1, 2 List
res = new ArrayList<>(); if(nums==null || nums.length==0) return res; if(nums.length==1) { res.add(nums[0]); return res; } int m1 = nums[0]; int m2 = 0; int c1 = 1; int c2 = 0; for(int i=1; i
nums.length/3) res.add(m1); if(c2>nums.length/3) res.add(m2); return res; }}

转载地址:http://ronno.baihongyu.com/

你可能感兴趣的文章
ORACLE 存储过程异常捕获并抛出
查看>>
root用户重置其他密码
查看>>
Oracle推断值为非数字
查看>>
多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
查看>>
vue-cli中理不清的assetsSubDirectory 和 assetsPublicPath
查看>>
从JDK源码角度看Short
查看>>
五年 Web 开发者 star 的 github 整理说明
查看>>
Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo
查看>>
中台之上(五):业务架构和中台的难点,都是需要反复锤炼出标准模型
查看>>
inno setup 打包脚本学习
查看>>
php 并发控制中的独占锁
查看>>
React Native 0.20官方入门教程
查看>>
JSON for Modern C++ 3.6.0 发布
查看>>
我的友情链接
查看>>
监听在微信中打开页面时的自带返回按钮事件
查看>>
第一个php页面
查看>>
世界各国EMC认证大全
查看>>
最优化问题中黄金分割法的代码
查看>>
在JS中使用Ajax
查看>>
Jolt大奖获奖图书
查看>>