蓝桥杯30天真题冲刺|题解报告|第三十天
大家好,我是snippet,今天是我们这次蓝桥省赛前一起刷题的最后一天了,今天打了一场力扣周赛,前面3个题都是有思路的,第三个题只过了一半的案例,后面看完大佬们的题解彻悟,下面是我今天的题解
目录
一、最长平衡子字符串
题目链接:6362. 最长平衡子字符串 - 力扣(Leetcode)
题目内容:
解题思路:
代码:
二、转换二维数组
题目链接:6363. 转换二维数组 - 力扣(Leetcode)
题目内容:
解题思路:
代码:
三、老鼠和奶酪
题目链接:6364. 老鼠和奶酪 - 力扣(Leetcode)
题目内容:
解题思路:
代码:

一、最长平衡子字符串
题目链接:6362. 最长平衡子字符串 - 力扣(Leetcode)
题目内容:
给你一个仅由
0和1组成的二进制字符串s。如果子字符串中 所有的
0都在1之前 且其中0的数量等于1的数量,则认为s的这个子字符串是平衡子字符串。请注意,空子字符串也视作平衡子字符串。返回
s中最长的平衡子字符串长度。子字符串是字符串中的一个连续字符序列。
示例 1:
输入:s = "01000111"
输出:6
解释:最长的平衡子字符串是 "000111" ,长度为 6 。示例 2:
输入:s = "00111"
输出:4
解释:最长的平衡子字符串是 "0011" ,长度为 4 。示例 3:
输入:s = "111"
输出:0
解释:除了空子字符串之外不存在其他平衡子字符串,所以答案为 0 。提示:
1 <= s.length <= 50
'0' <= s[i] <= '1'
解题思路:
因为平衡字符串需要满足0和1的个数相同,并且0和1都是连续的,0必须在1的前面,当我们碰到0时,有两种情况:
1.前面没有1,0的数量++;
2.前面有1,重新计数;
当我们碰到1的时候有2种情况:
1.前面没有0,直接countinue跳转到下一个字符进行计算
2.前面有0,前面有0的话,需要计算0和1的个数,ans = Math.min(cnt0,cnt1)*2;
代码:
package 蓝桥杯30天真题冲刺.Day30.力扣第339场周赛;import java.io.*;/*** @author snippet* @data 2023-04-02* 力扣第399场周赛-最长平衡子字符串*/
public class T1_最长平衡子字符串 {static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));public static void main(String[] args) throws IOException {pw.flush();br.close();}public int findTheLongestBalancedSubstring(String s) {if (s == "") return 1;int ans = 0;int cnt0 = 0;int cnt1 = 0;for (int i = 0; i < s.length(); i++) {if (s.charAt(i) == '0') {if (cnt1 != 0) {cnt1 = 0;cnt0 = 1;} else {cnt0++;}} else {if (cnt0 == 0) continue;cnt1++;ans = Math.max(ans, Math.min(cnt0, cnt1)*2);}}return ans;}
}
二、转换二维数组
题目链接:6363. 转换二维数组 - 力扣(Leetcode)
题目内容:
给你一个整数数组
nums。请你创建一个满足以下条件的二维数组:1.二维数组应该 只 包含数组
nums中的元素。2.二维数组中的每一行都包含 不同 的整数。
3.二维数组的行数应尽可能 少 。
返回结果数组。如果存在多种答案,则返回其中任何一种。
请注意,二维数组的每一行上可以存在不同数量的元素。
示例 1:
输入:nums = [1,3,4,1,2,3,1]
输出:[[1,3,4,2],[1,3],[1]]
解释:根据题目要求可以创建包含以下几行元素的二维数组:
- 1,3,4,2
- 1,3
- 1
nums 中的所有元素都有用到,并且每一行都由不同的整数组成,所以这是一个符合题目要求的答案。
可以证明无法创建少于三行且符合题目要求的二维数组。示例 2:
输入:nums = [1,2,3,4]
输出:[[4,3,2,1]]
解释:nums 中的所有元素都不同,所以我们可以将其全部保存在二维数组中的第一行。提示:
1 <= nums.length <= 200
1 <= nums[i] <= nums.length
解题思路:
我们用map存到数组里面的所有数据,然后对map进行多次遍历,再把数据依次放入,并且满足每行里面的数据在这行里面都是唯一的
代码:
package 蓝桥杯30天真题冲刺.Day30.力扣第339场周赛;import java.io.*;
import java.util.*;/*** @author snippet* @data 2023-04-02* 力扣第399场周赛-转换二维数组*/
public class T2_转换二维数组 {static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));public static void main(String[] args) throws IOException {pw.flush();br.close();}public List<List<Integer>> findMatrix(int[] nums) {Map<Integer, Integer> map = new HashMap<>();List<List<Integer>> list = new ArrayList<>();int len = nums.length;int max = 0;for (int i = 0; i < len; i++) {list.add(new ArrayList<>());}for (int i = 0; i < len; i++) {max = Math.max(nums[i], max);map.put(nums[i], map.getOrDefault(nums[i], 0)+1);}for (List<Integer> temp : list) {for (int i = 1; i <= max; i++) {if (map.containsKey(i) && map.get(i) != 0) {temp.add(i);map.put(i, map.get(i)-1);}}}List<List<Integer>> ans = new ArrayList<>();for (List<Integer> temp : list) {if (temp.size() != 0) {ans.add(new ArrayList<>(temp));}}return ans;}
}
三、老鼠和奶酪
题目链接:6364. 老鼠和奶酪 - 力扣(Leetcode)
题目内容:
有两只老鼠和
n块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉。下标为
i处的奶酪被吃掉的得分为:1.如果第一只老鼠吃掉,则得分为
reward1[i]。2.如果第二只老鼠吃掉,则得分为
reward2[i]。给你一个正整数数组
reward1,一个正整数数组reward2,和一个非负整数k。请你返回第一只老鼠恰好吃掉
k块奶酪的情况下,最大 得分为多少。示例 1:
输入:reward1 = [1,1,3,4], reward2 = [4,4,1,1], k = 2
输出:15
解释:这个例子中,第一只老鼠吃掉第 2 和 3 块奶酪(下标从 0 开始),第二只老鼠吃掉第 0 和 1 块奶酪。
总得分为 4 + 4 + 3 + 4 = 15 。
15 是最高得分。示例 2:
输入:reward1 = [1,1], reward2 = [1,1], k = 2
输出:2
解释:这个例子中,第一只老鼠吃掉第 0 和 1 块奶酪(下标从 0 开始),第二只老鼠不吃任何奶酪。
总得分为 1 + 1 = 2 。
2 是最高得分。提示:
1 <= n == reward1.length == reward2.length <= 10^5
1 <= reward1[i], reward2[i] <= 1000
0 <= k <= n
解题思路:
这个题是求吃奶酪的最高得分,那我们就可以使用贪心,那我们可以先把第一只老鼠吃所有奶酪的得分用sum1记录下来,同时记录吃同一份奶酪时,第一只老鼠和第二只老鼠的得分差值(arr[i] = reward1[i] - reward2[i]),因为第一只老鼠只可以吃k份奶酪(就表示第二只老鼠可以吃len-k份奶酪),sum1记录的是第一只老鼠吃所有奶酪的得分,那我们需要份len-k份给第二只老鼠,对求得的得分差值arr进行排序(升序),我们把前len-k份奶酪分给第二只老鼠吃,也就是sum -= arr[i],这样子就可以让我们的得分达到最大值
代码:
package 蓝桥杯30天真题冲刺.Day30.力扣第339场周赛;import java.io.*;
import java.util.*;/*** @author snippet* @data 2023-04-02* 力扣第399场周赛-老鼠和奶酪*/
// 贪心
public class T3_老鼠和奶酪 {static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));public static void main(String[] args) throws IOException {int[] a = {1,4,4,6,4};int[] b = {6,5,3,6,1};System.out.println(miceAndCheese(a,b,1));pw.flush();br.close();}static public int miceAndCheese(int[] reward1, int[] reward2, int k) {int sum = 0;Integer[] arr = new Integer[reward1.length];for (int i = 0; i < reward1.length; i++) {arr[i] = reward1[i] - reward2[i];sum += reward1[i];}Arrays.sort(arr);for (int i = 0; i <reward1.length- k; i++) {sum -= arr[i];}return sum;}
}
相关文章:
蓝桥杯30天真题冲刺|题解报告|第三十天
大家好,我是snippet,今天是我们这次蓝桥省赛前一起刷题的最后一天了,今天打了一场力扣周赛,前面3个题都是有思路的,第三个题只过了一半的案例,后面看完大佬们的题解彻悟,下面是我今天的题解 目录…...
配置 Git Husky 代码提交约束
介绍 Git Husky 是一个可以管理 Git Hooks 的工具,它可以帮助我们在代码提交的时候运行脚本,以确保代码提交符合特定的规范和约定。 在 Git 中,允许在操作特定的事件时执行特定的脚本,这些事件我们称之为 Hooks。 Git Husky 利…...
IntelliJ IDEA 2023.1 最新变化
文章目录IntelliJ IDEA 2023.1 最新变化一. 主要更新1. 新 UI 增强 测试版启用新 UI2. 在项目打开时更早提供 IDE 功能3. 更快地导入 Maven 项目4.后台提交检查5. Spring Security 匹配器和请求映射的导航 Ultimate二. 用户体验1. 全 IDE 缩放2. 保存多个工具窗口布局的选项3. …...
stm32学习笔记-9 USART串口
9 USART串口 文章目录9 USART串口9.1 串口通信协议9.2 stm32的片上外设-USART9.3 USART收发相关实验9.3.1 实验1:串口发送9.3.2 实验2:移植printf函数9.3.3 实验3:串口发送接收9.4 USART串口数据包9.5 USART数据包相关实验9.5.1 实验1&#x…...
【蓝桥杯】每日四道编程题(两道真题+两道模拟)| 第四天
专栏: 蓝桥杯——每日四道编程题(两道真题两道模拟) “蓝桥杯就要开始了,这些题刷到就是赚到” ₍ᐢ..ᐢ₎♡ 另一个专栏: 蓝桥杯——每日四道填空题(两道真题两道模拟题) 目录 专栏࿱…...
大家有没有时候觉得,递归,分治,回溯,傻傻分不清楚?
递归,分治,回溯的定义 递归(Recursion) 递归是一种解决问题的方法,它将一个问题分解成一个或多个较小的相同类型的子问题,然后通过递归调用自身来解决这些子问题。递归通常包括一个基本情况(b…...
Java 8 - Lambda 表达式
1. 函数式接口 当一个接口中只有一个非 default 修饰的方法,这个接口就是一个函数式接口用 FunctionalInterface 标注 1)只有一个抽象方法 FunctionalInterface public interface MyInterface {void print(int x); } 2)只有一个抽象方法和…...
【Ruby学习笔记】4.Ruby 类和对象及类案例
前言 本章介绍Ruby的类和对象及类案例。 Ruby 类和对象 Ruby 是一种完美的面向对象编程语言。面向对象编程语言的特性包括: 数据封装数据抽象多态性继承 这些特性将在 面向对象的 Ruby 中进行讨论。 一个面向对象的程序,涉及到的类和对象。类是个别…...
分享一个计算表格内单元格合并的工具,支持行合并、列合并等常见场景
分享一个计算表格内单元格合并的工具,支持行合并、列合并等常见场景 效果图 安装 cj-toolkit-x/table-cell-merger 插件 npm i cj-toolkit-x/table-cell-merger使用方法 import {TableCellMerger} from "cj-toolkit-x/table-cell-merger" // 创建一个单…...
CUDA编程(三):Hello world
CUDA编程(三):Hello worldCUDA编程Hello worldCUDA编程 CUDA是Compute Unified Device Architecture的缩写,由英伟达公司2007年开始推出,初衷是为GPU增加一个易用的编程接口,让开发者无需学习复杂的着色语…...
二十九、String的不可变性
一、String的基本特性 1.String:字符串,使用一对“”引起来表示 1)String s1 “hallo”; //字面量的定义方式 2)String 说 new String(“hello”)’ 2.String声明为final的,不可被继承。 3.String实现了Serialzable接口:表示字符串是支持序列化的。实…...
TCP服务器如何使用select处理多客户连接
TCP是一种面向连接的通信方式,一个TCP服务器难免会遇到同时处理多个用户的连接请求的问题,本文用一个简化的实例说明如何在一个TCP服务器程序中,使用select处理同时出现的多个客户连接,文章给出了程序源代码,本文假定读者已经具备了基本的socket编程知识,熟悉基本的服务器…...
python字符编码
目录 ❤ 前言 文本编辑器存取文件的原理(nodepad,pycharm,word) python解释器执行py文件的原理 ,例如python test.py 总结 ❤ 什么是字符编码? ASCII MBCS Unicode ❤ 字符编码的发展史 阶段一: 现代计算…...
面向对象练习题(8)
目录 第一题 第二题 第三题 第一题 思路分析: 1.Person p new Student();这就是一个向上转型,让父类的引用指向子类的对象,但是向上转型不能访问子类的属性和方法 我们在写代码时看的是编译类型 在运行是看的是运行类型 p.run(); p.eat(); …...
重构类关系-Extract Interface提炼接口八
重构类关系-Extract Interface提炼接口八 1.提炼接口 1.1.使用场景 若干客户使用类接口中的同一子集,或者两个类的接口有部分相同。将相同的子集提炼到一个独立接口中。 类之间彼此互用的方式有若干种。“使用一个类”通常意味用到该类的所有责任区。另一种情况…...
vivo手机各系列简介和拆解
Vivo是中国智能手机制造商,其产品线较多,主要包括以下系列: X系列:X系列是Vivo的高端智能手机系列,注重出色的拍照性能、高质量的音效和高端的设计。该系列主要面向追求高质量拍照和高端体验的用户。 V系列࿱…...
Redis:redis通用命令;redis常见数据结构;redis客户端;redis的序列化
一、redis命令 1.redis通用命令 Redis 通用命令是一些 Redis 下可以作用在常用数据结构上的常用命令和一些基础的命令 常见的命令有: keys 查看符合模板的所有key,不建议在生产环境设备上使用,因为keys会模式匹配所有符合条件的key&#…...
Java新特性
switch Java中switch的三种用法方式 JAVA中的switch Java switch 中如何使用枚举? 注解 天天用注解你真的知道怎么用吗?Java中的注解及其实现原理。 JAVA注解 JAVA注解 基础 集合判空 求和 Java8之List求和 JAVA中对list使用stream对某个字段求和…...
Java_Spring:8. Spring 中 AOP 的细节
目录 1 说明 2 AOP 相关术语 3 学习 spring 中的 AOP 要明确的事 4 关于代理的选择 1 说明 spring 的 aop通过配置的方式,实现上一章节的功能。 2 AOP 相关术语 Joinpoint(连接点): 所谓连接点是指那些被拦截到的点。在 spring 中,这些点指的是方法,因为 spring …...
uni-app--》uni-app的生命周期讲解
🏍️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名在校大学生 🛵个人主页:亦世凡华、 🛺系列专栏:uni-app 🚲座右铭:人生亦可燃烧,亦可腐败…...
告别龟速采样!用DDIM加速你的扩散模型推理(附PyTorch代码)
加速扩散模型推理:DDIM核心原理与实战优化指南 在图像生成领域,扩散模型以其卓越的质量表现迅速成为研究热点,但传统DDPM(Denoising Diffusion Probabilistic Models)的致命缺陷在于其缓慢的采样速度——生成一张图片往…...
VSCode光标主题定制指南:从颜色令牌到扩展开发
1. 项目概述:一个为开发者定制的光标主题集合如果你和我一样,每天有超过8小时的时间都泡在代码编辑器里,那么你一定会对编辑器里那个千篇一律的、闪烁的竖线光标感到审美疲劳。warrenwoodhouse/cursors这个项目,就是来解决这个“小…...
从开源AI导师项目GURU-Ai拆解:如何构建具备教学能力的智能体
1. 项目概述:一个“AI导师”的诞生与定位最近在GitHub上看到一个挺有意思的项目,叫“Guru322/GURU-Ai”。光看名字,你可能会觉得这又是一个平平无奇的AI工具仓库。但点进去细看,你会发现它的野心不小——它想做的不是又一个聊天机…...
别再只会Commit了!用Git Desktop搞定分支合并与冲突解决(附真实开发场景)
别再只会Commit了!用Git Desktop搞定分支合并与冲突解决(附真实开发场景) 当你第一次接触Git时,可能觉得它就是个"保存按钮"——每次改完代码就commit一下。但随着项目规模扩大,特别是多人协作时,…...
如何永久保存你的微信聊天记录?WeChatExporter开源工具完整指南
如何永久保存你的微信聊天记录?WeChatExporter开源工具完整指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾经历过手机丢失、微信重装后珍贵聊天…...
嵌入式动画优化:DMA驱动位图渲染在SAMD21上的实现
1. 项目概述与核心思路如果你玩过嵌入式开发,尤其是想在小小的微控制器屏幕上搞点流畅的动画,大概率会被“卡顿”和“闪屏”折磨过。传统的逐像素绘制,在需要全屏更新时,CPU时间几乎全耗在了等待屏幕刷新上,用户体验大…...
训练篇第9节:FlashAttention深度解析(一)——原理与CUDA实现
从 O(N) 到 O(N),FlashAttention 用一记“IO感知”的巧劲,彻底解锁了Transformer处理超长序列的能力 前言 回溯整个训练篇,我们已经系统性地打怪升级:从显存优化的“三板斧”(梯度累积、激活重计算、碎片化管理),到分布式训练的并行策略(数据并行、模型并行、流水线并…...
紧急更新!Midjourney 6.6新引入的--chaos=97抽象阈值与表现主义情绪映射关系表(行业首份实测白皮书)
更多请点击: https://intelliparadigm.com 第一章:Midjourney抽象表现主义的范式跃迁 当AI图像生成从具象摹写迈入语义解构与形式重构阶段,Midjourney v6 的提示工程已不再满足于“梵高风格的星空”,而是主动参与抽象表现主义的本…...
ARM CoreSight SoC-400调试系统勘误解析与解决方案
1. CoreSight SoC-400调试系统深度解析在嵌入式系统开发领域,调试与跟踪技术是确保系统可靠性的关键环节。作为ARM架构下的核心调试解决方案,CoreSight SoC-400系列为开发者提供了强大的硬件支持。今天我将结合多年实战经验,深入剖析这个系统…...
Adafruit Bluefruit模块DFU模式恢复与固件更新全攻略
1. 项目概述如果你正在玩Adafruit的Bluefruit系列蓝牙模块,比如UART Friend或者SPI Friend,并且某天它突然“变砖”了——连接不上、没反应,或者Arduino IDE里怎么也刷不进新程序,先别急着把它扔进抽屉吃灰。这种情况我遇到过不止…...
