当前位置: 首页 > news >正文

2023-2-13 刷题情况

替换子串得到平衡字符串

题目描述

有一个只含有 ‘Q’, ‘W’, ‘E’, ‘R’ 四种字符,且长度为 n 的字符串。

假如在该字符串中,这四个字符都恰好出现 n/4 次,那么它就是一个「平衡字符串」。

给你一个这样的字符串 s,请通过「替换一个子串」的方式,使原字符串 s 变成一个「平衡字符串」。

你可以用和「待替换子串」长度相同的 任何 其他字符串来完成替换。

请返回待替换子串的最小可能长度。

如果原字符串自身就是一个平衡字符串,则返回 0。

样例

样例输入

s = “QWER”
s = “QQWE”
s = “QQQW”
s = “QQQQ”

样例输出

0 s 已经是平衡的了。
1 我们需要把一个 ‘Q’ 替换成 ‘R’,这样得到的 “RQWE” (或 “QRWE”) 是平衡的。
2 我们可以把前面的 “QQ” 替换成 “ER”。
3 我们可以替换后 3 个 ‘Q’,使 s = “QWER”。

提示

  • 1<=s.length<=1051 <= s.length <= 10^51<=s.length<=105
  • s.length 是 4 的倍数
  • s 中只含有 ‘Q’, ‘W’, ‘E’, ‘R’ 四种字符

思路

n的范围为1e5,需要设计的算法的时间复杂度不能大于O(n2)O(n^2)O(n2)。测试用例有点怪。题目理解起来比较麻烦。
看了题解。使用的是双指针。

代码实现

class Solution {public int balancedString(String s) {int len = s.length();int standard = len / 4;int[] arr = new int['Z'];for(int i = 0; i < len; i++) arr[s.charAt(i)]++;if(arr['Q'] == standard && arr['W'] == standard && arr['E'] == standard && arr['R'] == standard) return 0;int ans = len;for(int left = 0, right = 0; right < len; right++){--arr[s.charAt(right)];while(arr['Q'] <= standard && arr['W'] <= standard && arr['E'] <= standard && arr['R'] <= standard){ans = Math.min(ans, right - left + 1);++arr[s.charAt(left++)];}}return ans;}
}

课程表

题目描述

你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。

在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。

例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。
请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 false 。

样例

样例输入

numCourses = 2, prerequisites = [[1,0]]
numCourses = 2, prerequisites = [[1,0],[0,1]]

样例输出

true 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0 。这是可能的。
false 总共有 2 门课程。学习课程 1 之前,你需要先完成​课程 0 ;并且学习课程 0 之前,你还应先完成课程 1 。这是不可能的。

提示

  • 1<=numCourses<=1051 <= numCourses <= 10^51<=numCourses<=105
  • 0 <= prerequisites.length <= 5000
  • prerequisites[i].length == 2
  • 0 <= ai, bi < numCourses
  • prerequisites[i] 中的所有课程对 互不相同

思路

拓扑排序,刚好想写一些拓扑排序的题目,这题应该就是拓扑排序的基本。给出每个点的入度,只需返回能否完成拓扑排序(即图中是否存在自环)。dfs、bfs均可使用。

代码实现

dfs

class Solution {List<List<Integer>> edges;public boolean canFinish(int numCourses, int[][] prerequisites) {edges = new ArrayList<>();int[] vis = new int[numCourses];for(int i = 0; i < numCourses; i++) edges.add(new ArrayList<>());for(int[] cur : prerequisites)  edges.get(cur[1]).add(cur[0]);for(int i = 0; i < numCourses; i++)if(!dfs(vis, i)) return false;return true;}// vis状态为1表示当此进行dfs时已经遍历过,再次遇到属于环。即不满足拓扑排序;// vis状态为-1表示之前dfs已经遍历过当前结点,相当于给dfs剪枝吧。private boolean dfs(int[] vis, int index){if(vis[index] == 1) return false;if(vis[index] == -1) return true;vis[index] = 1;for(int i : edges.get(index)){if(!dfs(vis, i)) return false;}vis[index] = -1;return true;}
}

bfs

class Solution {public boolean canFinish(int numCourses, int[][] prerequisites) {int[] out = new int[numCourses];List<List<Integer>> edges = new ArrayList<>();for(int i = 0; i < numCourses; i++) edges.add(new ArrayList<Integer>());Queue<Integer> queue = new ArrayDeque<>();for(int[] prerequisit : prerequisites){out[prerequisit[0]]++;edges.get(prerequisit[1]).add(prerequisit[0]);}for(int i = 0; i < numCourses; i++) if(out[i] == 0) queue.offer(i);while(!queue.isEmpty()){int pre = queue.poll();numCourses--;for(int cur : edges.get(pre)){if(--out[cur] == 0) queue.offer(cur);}}return numCourses == 0;}
}

相关文章:

2023-2-13 刷题情况

替换子串得到平衡字符串 题目描述 有一个只含有 ‘Q’, ‘W’, ‘E’, ‘R’ 四种字符&#xff0c;且长度为 n 的字符串。 假如在该字符串中&#xff0c;这四个字符都恰好出现 n/4 次&#xff0c;那么它就是一个「平衡字符串」。 给你一个这样的字符串 s&#xff0c;请通过…...

[HSCSEC 2023] rev,pwn,crypto,Ancient-MISC部分

比赛后有讲解&#xff0c;没赶上&#xff0c;前20比赛完1小时提交WP&#xff0c;谁会大半夜的起来写WP。总的感觉pwn,crypto过于简单&#xff0c;rev有2个难的不会&#xff0c;其它不是我的方向都感觉过于难&#xff0c;一个都没作。revDECOMPILEONEOONE入门题&#xff0c;一个…...

SpringBoot 接入 Spark

本文主要介绍 SpringBoot 与 Spark 如何对接&#xff0c;具体使用可以参考文章 SpringBoot 使用 Spark pom 文件添加 maven 依赖 spark-core&#xff1a;spark 的核心库&#xff0c;如&#xff1a;SparkConfspark-sql&#xff1a;spark 的 sql 库&#xff0c;如&#xff1a;s…...

在线支付系列【23】支付宝开放平台产品介绍

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 文章目录前言支付产品App 支付手机网站支付电脑网站支付新当面资金授权当面付营销产品营销活动送红包会员产品App 支付宝登录人脸认证信用产品芝麻 GO芝麻先享芝麻免押芝麻工作证安全产品交易安全防护其…...

Python绝对路径和相对路径详解

在介绍绝对路径和相对路径之前&#xff0c;先要了解一下什么是当前工作目录。什么是当前工作目录每个运行在计算机上的程序&#xff0c;都有一个“当前工作目录”&#xff08;或 cwd&#xff09;。所有没有从根文件夹开始的文件名或路径&#xff0c;都假定在当前工作目录下。注…...

基于多进程的并发编程

一&#xff1a;不同平台基于多进程并发编程的实现 1.Windows平台 参考博文&#xff1a;Windows 编程&#xff08;多进程&#xff09; 更多API: 1&#xff09;waitForSingleObject&#xff1a;等待一个内核对象变为已通知状态 2&#xff09;GetExitCodeProcess&#xff1a;获取…...

Flask入门(4):CBV和FBV

目录4.CBV和FBV4.1 继承 views.View4.2 继承 views.MethodView4.CBV和FBV 前面的例子中&#xff0c;都是基于视图函数构建视图&#xff08;FBV&#xff09;&#xff0c;和Django一样&#xff0c;Flask也有基于类构建视图&#xff08;CBV&#xff09;的方法。这种方式用的不多&…...

Qt OpenGL(三十九)——Qt OpenGL 核心模式-在雷达坐标系中绘制飞行的飞机

提示:本系列文章的索引目录在下面文章的链接里(点击下面可以跳转查看): Qt OpenGL 核心模式版本文章目录 Qt OpenGL(三十九)——Qt OpenGL 核心模式-在雷达坐标系中绘制飞行的飞机 一、场景 在之前绘制完毕雷达显示图之后,这时候,我们能匹配的场景就更广泛了,比如说…...

系统应用 odex 转 dex

说下为什会有这个需求&#xff0c;以某系统应用为例&#xff0c;我们通过 adb 获取到的 apk 反编译查看只有少部分代码和资源&#xff0c;关键代码看不到。 经过一系列操作&#xff0c;把 odex 转换为 dex 可以看到源码。 工具下载 Smali 下载 1、使用 adb shell pm list pa…...

【GPLT 三阶题目集】L3-013 非常弹的球

刚上高一的森森为了学好物理&#xff0c;买了一个“非常弹”的球。虽然说是非常弹的球&#xff0c;其实也就是一般的弹力球而已。森森玩了一会儿弹力球后突然想到&#xff0c;假如他在地上用力弹球&#xff0c;球最远能弹到多远去呢&#xff1f;他不太会&#xff0c;你能帮他解…...

vue项目第三天

论坛项目动态路由菜单以及渲染用户登录全局前置拦截器获取用户的菜单以及接口执行过程解析菜单数据&#xff0c;渲染伟动态路由。菜单数据将数据源解析为类似路由配置对象的格式&#xff08;./xxx/xxx 这种格式&#xff09;。下方是路由实例的代码,后面封装了很多方法这里也需要…...

【渝偲医药】实验室关于核磁共振波谱NMR的知识(原理、用途、分析、问题)

核磁共振波谱法&#xff08;Nuclear Magnetic Resonance&#xff0c;简写为NMR&#xff09;与紫外吸收光谱、红外吸收光谱、质谱被人们称为“四谱"&#xff0c;是对各种有机和无机物的成分、结构进行定性分析的强有力的工具之一&#xff0c;亦可进行定量分析。 核磁共振&…...

教你文本生成图片——stablediffusion

今天来点轻松的话题&#xff0c;带大家玩一个用文字生成图片的模型。相信大家如果关注AIGC领域&#xff0c;对文本生成图片&#xff0c;对Stablefiffusion、DEALL.E应该不陌生。今天给大家介绍的就是基于SD2 finetune出来的一个模型&#xff08;&#xff09;这篇文章不会教大家…...

C语言学习笔记-命令行参数

在图形界面普及之前都使用命令行界面。DOS和UNIX就是例子。Linux终端提供类UNIX命令行环境。 命令行&#xff08;command line&#xff09;是在命令行环境中&#xff0c;用户为运行程序输入命令的行。命令行参数&#xff08;command-line argument&#xff09;是同一行的附加项…...

ASEMI代理FGH60N60,安森美FGH60N60车规级IGBT

编辑-Z 安森美FGH60N60车规级IGBT参数&#xff1a; 型号&#xff1a;FGH60N60 集电极到发射极电压&#xff08;VCES&#xff09;&#xff1a;600V 栅极到发射极电压&#xff08;VGES&#xff09;&#xff1a;20V 收集器电流&#xff08;IC&#xff09;&#xff1a;120A 二…...

http409报错原因

今天一个同事的接口突然报409,大概百度了一下,不是很清楚,谷歌也没找到特别好的解释 因为是直接调用的gitlab,就直接看了下gitlab的api The following table shows the possible return codes for API requests. Return valuesDescription200 OKThe GET, PUT or DELETE request…...

设计模式:适配器模式(c++实现案例)

适配器模式 适配器模式是将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。好比日本现在就只提供110V的电压&#xff0c;而我的电脑就需要220V的电压&#xff0c;那怎么办啦?适配器就是干这活的&#xff0…...

Python|每日一练|数组|回溯|哈希表|全排列|单选记录:全排列 II|插入区间|存在重复元素

1、全排列 II&#xff08;数组&#xff0c;回溯&#xff09; 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2]输出&#xff1a;[[1,1,2], [1,2,1], [2,1,1]] 示例 2&#xff1a; 输…...

Linux进程状态

Linux进程状态前言阻塞挂起Linux进程状态R运行状态S睡眠状态D磁盘休眠状态T停止状态X死亡状态Z僵尸状态僵尸进程的总结前言 在介绍Linux的进程状态之前&#xff0c;我们先做一个小调查&#xff1a; 正在运行的程序是一直在运行吗&#xff1f;或者说正在运行的程序一直在被cpu处…...

大数据第一轮复习笔记

linux: 添加用户 useradd 删除用户 userdel useradd -d指定组 添加组 groupadd 删除组 groupdel 创建目录 mkdir -p 删除目录 rm -rf 创建目录 touch cat -n 查看文件(显示行号)...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

6.9-QT模拟计算器

源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...