LeetCode 第 154 场周赛
一、“气球” 的最大数量(LeetCode-5189)
1.1 题目描述

1.2 解题思路
统计各个字母的出现的次数,然后根据“木桶最短板”返回就好。
1.3 解题代码
public class Solution {
public int maxNumberOfBalloons(String text) {
int[] arr = new int[5];
char[] charArray = text.toCharArray();
for(char ch:charArray){
if(ch == 'a'){
arr[0]++;
}
if(ch == 'b'){
arr[1]++;
}
if(ch == 'l'){
arr[2]++;
}
if(ch == 'o'){
arr[3]++;
}
if(ch == 'n'){
arr[4]++;
}
}
int res = -1;
for(int i = 0;i<5;i++){
if(i == 2 || i == 3){
res = arr[i]/2 > res && res != -1 ? res:arr[i]/2;
}else{
res = arr[i] > res && res != -1? res:arr[i];
}
}
return res;
}
}
二、反转每对括号间的子串(LeetCode-1190)
2.1 题目描述

2.2 解题思路
使用递归去解,每次只反转最里层括号的字符串,每次递归返回时将字符串外的括号去掉,终止条件为,字符串不存在括号。
2.3 解题代码
public class Solution {
public String reverseParentheses(String s) {
int len = s.length();
int left = -1;
int right = len + 1;
//获取最靠右的左括号
for (int i = 0; i < len; i++) {
if (s.charAt(i) == '(') {
left = Math.max(i, left);
}
}
//获取最靠左的右括号
for (int i = 0; i < len; i++) {
//注意边界,right应该大于left
if (s.charAt(i) == ')' && i>left) {
right = Math.min(i, right);
}
}
// 如果不存在括号,则返回字符串终止
if (left == -1 && right == len + 1) {
return s;
}
//对括号内的字符串进行反转
String tmp = new StringBuilder(s.substring(left + 1, right)).reverse().toString();
//去除括号,进行拼接
tmp = s.substring(0,left) + tmp + s.substring(right+1,len);
//进行递归
return reverseParentheses(tmp);
}
}
三、K 次串联后最大子数组之和(LeetCode-5191)
3.1 题目描述

3.2 解题思路
考虑好所有的情况。
如果k = 1,则取最大子字符串之和
如果数组是
{1,1,16,-15,10,1,3},则需要找到leftMax、rightMax,然后加上单个数组全部元素之和 *(k-2)。如果数组是
{1,1,16,-15},则需要找到Math.max(leftMax、rightMax),然后加上单个数组全部元素之和 *(k-1)。如果数组是
{1,2,3,4},则结果是单个数组全部元素之和 * k。
3.3 解题代码
public class Solution {
public static int MOD = (int) (1e9 + 7);
public int kConcatenationMaxSum(int[] arr, int k) {
long sum = 0;
long res = 0;
int len = arr.length;
int leftMax = 0;
int rightMax = 0;
// 统计固定左端点,从左往右最大和
for (int i = 0, cur = 0; i < len; i++) {
cur += arr[i];
leftMax = Math.max(leftMax, cur);
}
// 统计固定右端点,从右往左最大和
for (int i = len - 1, cur = 0; i >= 0; i--) {
cur += arr[i];
rightMax = Math.max(rightMax, cur);
}
// 最大的子数组
for (int i = 0, cur = 0; i < len; i++) {
cur += arr[i];
if (cur < 0) {
cur = 0;
}
res = Math.max(res, cur);
}
//获取数组之和
for (int t : arr) {
sum += t;
}
if (k == 1) {
return (int) res % MOD;
}
//1.取所有sum
res = Math.max(res, sum * k);
//2.只拼接一边之和
res = Math.max(res, sum * (k - 1) + Math.max(leftMax, rightMax));
//3.左右最大子串之和
res = Math.max(res, sum * (k - 2) + leftMax + rightMax);
//4.sum < 0
res = Math.max(res, leftMax + rightMax);
res = res % MOD;
return (int) res;
}
}
LeetCode 第 154 场周赛的更多相关文章
- LeetCode第154场周赛(Java)
估计要刷很久才能突破三道题了.还是刷的太少.尽管对了前两题,但是我觉得写的不怎么样.还是将所有题目都写一下吧. 5189. "气球" 的最大数量 题目比较简单.就是找出一个字符串中 ...
- LeetCode 第 165 场周赛
LeetCode 第 165 场周赛 5275. 找出井字棋的获胜者 5276. 不浪费原料的汉堡制作方案 5277. 统计全为 1 的正方形子矩阵 5278. 分割回文串 III C 暴力做的,只能 ...
- Leetcode第 217 场周赛(思维量比较大)
Leetcode第 217 场周赛 比赛链接:点这里 做完前两题我就知道今天的竞赛我已经结束了 这场比赛思维量还是比较大的. 1673. 找出最具竞争力的子序列 题目 给你一个整数数组 nums 和一 ...
- Leetcode 第133场周赛解题报告
今天参加了leetcode的周赛,算法比赛,要求速度比较快.有思路就立马启动,不会纠结是否有更好的方法或代码可读性.只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了. 比赛时先看的第二题,一看 ...
- LeetCode第151场周赛(Java)
这是我第一次写周赛的题目,而且还是虚拟的.从这次起,以后就将所有错过的题目都写到博客来.当然既然是我错的,那代码肯定不是我自己的.我会注明来源.并且我会自己敲一遍.多总结总是没坏处的. 另外比较糟糕的 ...
- LeetCode第152场周赛(Java)
这算是我第一次正式参加 LeetCode 的周赛吧.通过两道题.意料之中(通过上次模拟可以看出来).总的来说,脑袋还是不太灵光.想的有点慢.全球第一名 0:10:19 就全部通过...感觉我的智商被狠 ...
- Leetcode 第137场周赛解题报告
今天的比赛的题目相对来说比较「直白」,不像前几周都是一些特定的算法,如果你没学过不可能想出来. 做了这些周,对leetcode比赛的题目也发现了一些「规律」. 一般前两道题都很「简单」,只要有想法,直 ...
- LeetCode 第 150 场周赛
一.拼写单词(LeetCode-1160) 1.1 题目描述 1.2 解题思路 由于给定的chars,每个字母只能用一次,所以用大小为26的数组charsArray来表示a-z(例如charsArra ...
- LeetCode 第 196 场周赛 (题目:5452-5455,这是参加过最坑的周赛,暴力n^2居然可以过)
5452. 判断能否形成等差数列 给你一个数字数组 arr . 如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 . 如果可以重新排列数组形成等差数列,请返回 tru ...
随机推荐
- mysql:[Err] 1068 - Multiple primary key defined
添加主键时,出现错误:[Err] 1068 - Multiple primary key defined #增加主键 ) not null; ; alter table my_test add pri ...
- zabbix Server 4.0监控Flume关键参数
zabbix Server 4.0监控Flume关键参数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Flume本身提供了http, ganglia的监控服务.当然我们也可以使用 ...
- 2013.5.8 - KDD第二十天
下午去上刘杨老师的机器学习课,今天讲的"朴素被噎死",他本想当场举个例子,结果读了好半天才吧关系都拼凑上,他说明天给我们带来个精彩的,回去之后夜里把朴素贝叶斯自己又脑补了一下,发现贝叶斯原理(后验)就 ...
- 右键tomcat找不到项目:There are no resources that can be added or removed from the server.
右键Add and Remove找不到项目,会出现下面这个弹框: 之后在项目文件夹上右键(Java Build Path中引用的jdk的版本也需要和下面这个Project Facets中配置的java ...
- 浅谈OpenStack与虚拟机的区别与联系
很多不太明白OpenStack与虚拟机之间的区别,下面以KVM为例,给大家讲一下他们的区别和联系 OpenStack:开源管理项目OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项 ...
- 使用SikuliX定位Object(flash)元素
先说一下背景,这个是我们测试的系统上的一个上传文件的地方,但是用传统的selenium方法很难定位的到.具体的样子是下面这样的. 使用id等属性定位做点击操作好像不能直接操作.无奈之下,只好从网上找找 ...
- littlefs了解一下
littlefs是一个文件系统,断电数据不会出异常,适合IOT场景.
- 《CoderXiaoban》第八次团队作业:Alpha冲刺4
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验十二 团队作业8:软件测试与ALPHA冲刺 团队名称 Coderxiaoban团队 作业学习目标 (1)掌握软件测试基 ...
- HTTPS——https下的静态资源中如何使用http的地址
前言 今天在改博皮的时候,将一些图片上传到七牛,但是引入的时候出问题了,因为七牛cnd设置的不是https域名,所以加载资源的时候导致自动转为https请求. 步骤 错误的写法 background: ...
- HDFS中DataNode的心跳机制
DataNode心跳机制的作用讲解了DataNode的三个作用: register:当DataNode启动的时候,DataNode需要将自身的一些信息(hostname, version等)告诉Nam ...