java求众数_Java实现 LeetCode 229 求众数 II(二)
229. 求众数 II
给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。
说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。
示例 1:
输入: [3,2,3]
输出: [3]
示例 2:
输入: [1,1,1,3,3,2,2,2]
输出: [1,2]
class Solution {
public List majorityElement(int[] nums) {
List res = new ArrayList<>();
if (nums.length < 1) {
return res;
}
int num1 = nums[0];
int count1 = 0;
int num2 = nums[0];
int count2 = 0;
for (int i = 0; i < nums.length; i++) {
int temp = nums[i];
if (temp == num1) {
count1++;
} else if (temp == num2) {
count2++;
} else if (count1 == 0) {
count1 = 1;
num1 = temp;
} else if (count2 == 0) {
count2 = 1;
num2 = temp;
} else {
count1--;
count2--;
}
}
count1 = 0;
count2 = 0;
int numSum = nums.length / 3;
for (int i = 0; i < nums.length; i++) {
int temp = nums[i];
if (temp == num1) {
count1++;
} else if (temp == num2) {
count2++;
}
}
if (count1 > numSum) {
res.add(num1);
}
if (num1 != num2 && count2 > numSum) {
res.add(num2);
}
return res;
}
}
java求众数_Java实现 LeetCode 229 求众数 II(二)相关推荐
- leetcode 229. Majority Element II | 229. 求众数 II(找出现次数超过n/k的元素)
题目 https://leetcode.com/problems/majority-element-ii/ 题解 思路来源于左程云<程序员代码面试指南> 问题描述 原问题:给定一个整型数组 ...
- LeetCode 229. 求众数 II(摩尔投票)
1. 题目 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素. 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1). 示例 1: 输入: [3,2,3] 输出: ...
- [leetcode]229. 求众数 II
解题思路:题目要求空间复杂度为O(1) 大于1/3的数不会超过2个,利用Boyer-Moore 投票算法找到数量最多的两个数,再检查下这俩个数的数量有没有超过1/3 class Solution {p ...
- java 字符串子串_java实现字符串匹配求两个字符串的最大公共子串
本文实例讲述了java实现求两个字符串最大公共子串的方法.分享给大家供大家参考,具体如下: 最近在项目工作中有一个关于文本对比的需求,经过这段时间的学习,总结了这篇博客内容:求两个字符串的最大公共子串 ...
- java牛顿迭代法_Java实现牛顿迭代法求平方根
突然发现牛顿迭代法求解求根好快啊,好方便啊(好吧,我承认我只会这一种解方程的方式) 附上我试着写的求根代码,求方程涉及大量判断,代码就不贴了,大佬就看着玩一下就行了,别吐槽,我知道这技术含量很低,真的 ...
- java老师实例_java实例关于继承求实例,有关学生和老师的程序代码!望诸位软件达人帮忙,谢谢大虾!...
import java.util.HashMap; public class Cmain { /** *学生类 学号(id)名字 老师标号t_id *A是Cmain的内部类 B一样 */ class ...
- java求子串_Java substring()方法:求子字符串(截取字符串)
String 类中的 substring() 方法实现对字符串从指定的索引位置开始截取,直到此字符串的末尾,并返回一个新的字符串. 语法1 substring(int beginIndex) 参数说明 ...
- java 柱状图 宽度_Java实现 LeetCode 84 柱状图中最大得矩形
84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的 ...
- java 转化罗马数字._Java刷LeetCode:整数转罗马数字
0 Java刷LeetCode:整数转罗马数字 Aug. 17, 2018, 9:41 p.m. 题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 ...
最新文章
- 初始化Mysql系统报错,begin failesd--conpilation aborted at scripts........
- 利用3D打印构建衍射深度神经网络,可光速执行数字运算
- 工业4.0进行时:增强现实技术如何变革制造业
- 工作中常用的第三放的框架
- 扣押游戏android,恐怖探索游戏「扣押(DISTRAINT)」
- Log4net 在framework Client中编译失败
- 为什么张扬的人别人很讨厌_为什么每个人总是讨厌重新设计,即使他们很好
- c4.5算法python实现_算法:用Python实现—最优化算法
- 【HLSDK系列】服务端 AddToFullPack 函数
- vue 函数 路由跳转_vue路由跳转的方式
- centos 7 重设密码总是失败
- Docker教程小白实操入门(21)--如何备份、恢复数据卷
- python locust mqtt_Boomer 实战压测 mqtt,2w 并发轻松实现
- S3C6410 SD卡启动uboot分析(详细)
- 推荐一款可以在浏览器中运行的人脸识别库
- webSocket实现聊天室功能
- 华为畅享20 pro 和华为畅享Z 的区别 哪个好
- worksheet怎么读_worksheet是什么意思_worksheet的翻译_音标_读音_用法_例句_爱词霸在线词典...
- Kotlin【简介】Android开发 配置 扩展
- oracle lob类型和mysql text_LOB数据类型