一、“气球” 的最大数量(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 场周赛的更多相关文章

  1. LeetCode第154场周赛(Java)

    估计要刷很久才能突破三道题了.还是刷的太少.尽管对了前两题,但是我觉得写的不怎么样.还是将所有题目都写一下吧. 5189. "气球" 的最大数量 题目比较简单.就是找出一个字符串中 ...

  2. LeetCode 第 165 场周赛

    LeetCode 第 165 场周赛 5275. 找出井字棋的获胜者 5276. 不浪费原料的汉堡制作方案 5277. 统计全为 1 的正方形子矩阵 5278. 分割回文串 III C 暴力做的,只能 ...

  3. Leetcode第 217 场周赛(思维量比较大)

    Leetcode第 217 场周赛 比赛链接:点这里 做完前两题我就知道今天的竞赛我已经结束了 这场比赛思维量还是比较大的. 1673. 找出最具竞争力的子序列 题目 给你一个整数数组 nums 和一 ...

  4. Leetcode 第133场周赛解题报告

    今天参加了leetcode的周赛,算法比赛,要求速度比较快.有思路就立马启动,不会纠结是否有更好的方法或代码可读性.只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了. 比赛时先看的第二题,一看 ...

  5. LeetCode第151场周赛(Java)

    这是我第一次写周赛的题目,而且还是虚拟的.从这次起,以后就将所有错过的题目都写到博客来.当然既然是我错的,那代码肯定不是我自己的.我会注明来源.并且我会自己敲一遍.多总结总是没坏处的. 另外比较糟糕的 ...

  6. LeetCode第152场周赛(Java)

    这算是我第一次正式参加 LeetCode 的周赛吧.通过两道题.意料之中(通过上次模拟可以看出来).总的来说,脑袋还是不太灵光.想的有点慢.全球第一名 0:10:19 就全部通过...感觉我的智商被狠 ...

  7. Leetcode 第137场周赛解题报告

    今天的比赛的题目相对来说比较「直白」,不像前几周都是一些特定的算法,如果你没学过不可能想出来. 做了这些周,对leetcode比赛的题目也发现了一些「规律」. 一般前两道题都很「简单」,只要有想法,直 ...

  8. LeetCode 第 150 场周赛

    一.拼写单词(LeetCode-1160) 1.1 题目描述 1.2 解题思路 由于给定的chars,每个字母只能用一次,所以用大小为26的数组charsArray来表示a-z(例如charsArra ...

  9. LeetCode 第 196 场周赛 (题目:5452-5455,这是参加过最坑的周赛,暴力n^2居然可以过)

    5452. 判断能否形成等差数列   给你一个数字数组 arr . 如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 . 如果可以重新排列数组形成等差数列,请返回 tru ...

随机推荐

  1. WebSocket转载

    目录   概述  WebSocket 客户端  WebSocket 服务端  WebSocket 代理  FAQ  完整示例  资料 概述 WebSocket 是什么? WebSocket 是一种网络 ...

  2. p1.BTC-密码学的原理

    所谓加密货币是不加密的,区块链上所有的交易内容(包括:账户的地址,转账的地址)都是公开的. Bitcoin中主要用到密码学的中的两个功能:Hash和签名. 一 Hash Cryptographic h ...

  3. Unable to guess the mime type as no guessers are available 2 9

    做了一个上传图片的功能,在本地上传通过,服务器报 bug Unable to guess the mime type as no guessers are available(Did you enab ...

  4. 基于yum的方式安装Cloudera Manager Server(使用Mysql 8.0版本)

    基于yum的方式安装Cloudera Manager Server(使用Mysql 8.0版本) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装和配置元数据库 1>. ...

  5. js HTTP 下载 处理 api 请求 返回数据流

    axios({ method: 'post', url: 'url....', data:{}, timeout: 1000*60, responseType: 'blob',// 此选项必须设置 否 ...

  6. python高级特性-迭代

    概述 for  v   in d.values(): for k,v  in d.items(): for  a    in 'adfa': #判断对象是否可迭代 from collections i ...

  7. mysql in条件查询到底会不会用到索引

    MySQL 的 in 查询在 5.5 以上的版本中存储引擎都是 innodb 的,正常情况下会走索引的!至于 MyISAM 没试过! 如果是 5.5 之前的版本确实不会走索引的,在 5.5 之后的版本 ...

  8. mysql开发相关

    1.mysql事务原理,特性,事务并发控制2.如何解决高并发场景下的插入重复3.乐观锁和悲观锁4.常用数据库引擎之间区别5.mysql索引6.B-Tree7.mysql索引类型8.什么时候创建索引9. ...

  9. brief 程序注释

    /** * @brief Acceleration (g's) in body frame. * Embedded MPL defines gravity as positive accelerati ...

  10. 手把手教用C#编写Windows服务 并控制服务 安装、启动、停止、卸载

    Windows服务 Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动, ...