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

刷题日记4

2025.1.21

2904. 最短且字典序最小的美丽子字符串

2904. 最短且字典序最小的美丽子字符串 - 力扣(LeetCode)

class Solution {
public:string shortestBeautifulSubstring(string s, int k) {//遍历找到美丽子字符串,更新时候如果<res,输出字符串直接更改,//如果==res,和输出字符串进行比较,取小的那个//问题:如何比较字符串int l=0,r=0,sum=0,res=1e9+5;string str;while(r<s.size()){sum+=s[r]-'0';while(sum>k||s[l]=='0'){sum-=s[l]-'0';l++;}if(sum==k){int len=r-l+1;string st=s.substr(l,len);if(len<res||(len==res&&st<str)){res=len;str=st;}}r++;}return str;}
};

思考:1。思路是正确的,和灵神思路一样。值得肯定。

2。卡点一:计算累加sum的时候,需要s[r]-'0'。不能直接sum+=s[r]。

3。卡点二:字符串之间的比较。s1<s2。按照字典序进行比较。abc<abd。

4。卡点三:第二层while循环中,判断条件还要加上s[l]=='0'。

5.在逻辑运算中,&&优先级高于||

1234. 替换子串得到平衡字符串

1234. 替换子串得到平衡字符串 - 力扣(LeetCode)

class Solution {
public:int balancedString(string s) {//m=n/4,是每个字符应该出现的次数//滑动窗口,在窗口外,每种字符的次数必须满足<=m,该窗口才符合能替换的子串的条件//那么在二层循环中,满足子串条件才记录res,缩小范围int n=s.size(),m=n/4,cnt['X']{};for(char c:s)cnt[c]++;if(cnt['Q']==m&&cnt['W']==m&&cnt['E']==m&&cnt['R']==m) return 0;int l=0,r=0,res=1e9+5;while(r<n){cnt[s[r]]--;while(cnt['Q']<=m&&cnt['W']<=m&&cnt['E']<=m&&cnt['R']<=m){res=min(res,r-l+1);cnt[s[l]]++;l++;}r++;}return res;}
};

自己的错误版本:

class Solution {
public:int balancedString(string s) {//先统计字符长度n,//统计每个qwer的个数,统计更改为多余字母的个数//接着遍历,滑窗找到包含所有多余字母的最小字符串int n=s.size();vector<int>num(4,0);int r=0,res=1e9+5;while(r<n){if(s[r]=='Q')num[0]++;else if(s[r]=='W')num[1]++;else if(s[r]=='E')num[2]++;else num[3]++;r++;}for(int i=0;i<4;i++){if(num[i]>n/4) num[i]-=n/4;else num[i]==0;}int l=0;r=0;while(r<n){if(s[r]=='Q') num[0]--;else if(s[r]=='W')num[1]--;else if(s[r]=='E')num[2]--;else num[3]--;while(num[0]<0||num[1]<0||num[2]<0||num[3]<0){if(s[l]=='Q')num[0]++;else if(s[l]=='W')num[1]++;else if(s[l]=='E')num[2]++;else num[3]++;l++;}if(num[0]==0&&num[1]==0&&num[2]==0&&num[3]==0){res=min(res,r-l+1);}r++;}return res;}
};

思考:解题思路已经注释,这里写一下自己的收获。

1。对于存储q,w,e,r的对应的个数,用空间换时间,类似哈西表,用int cnt['X']。

2。需要添加上初始时各个字符都为m的情况,不然l会直接遍历到数组溢出。

2875. 无限数组的最短子数组

2875. 无限数组的最短子数组 - 力扣(LeetCode)

class Solution {
public:int minSizeSubarray(vector<int>& nums, int target) {//遍历nums,l,r一直增加,访问nums时duin取余//二层循环,大于target时,l右移,//二层循环外更新int n=nums.size();int l=0,r=0,res=1e9+5;long long total=0,sum=0;for(int i=0;i<n;i++)total+=nums[i];while(r<2*n){sum+=nums[r%n];while(sum>target%total){sum-=nums[l%n];l++;}if(sum==target%total) res=min(res,r-l+1);r++;}if(res==1e9+5)return -1;else return res+target/total*n;}
};

思考:1。思考上的一个错误:两个数组不一定能满足条件。nums.length*nums[i]最大值是大于target的,但是这是最大值。也就是说不知道需要多少个数组才能累加到target。

2。思路:当累加达到target时需要大于两个的数组时,至少中间的数组是全部计算的,那么就是说只需要研究两个数组就行,即total是数组之和,target/total是全部都计算上的数组个数,target%total是需要在两个数组上寻找的最短子数组的累加之和。

相关文章:

刷题日记4

2025.1.21 2904. 最短且字典序最小的美丽子字符串 2904. 最短且字典序最小的美丽子字符串 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:string shortestBeautifulSubstring(string s, int k) {//遍历找到美丽子字符串&#xff0c;更新时候如果<res&…...

在vscode中拉取gitee里的项目并运行

拉取项目: 方法一:vscode点击查看--->终端(或者直接通过快捷键ctrol+ `打开) 在终端内通过cd命令定位到你想存放项目的文件夹 例如:cd h: 通过命令:git clone 地址 例如:git clone newbee-mall-vue-app: 前端代码 等待拉取完成即可在对应文件夹下看到项目啦 方…...

IDEA通过Contince接入Deepseek

Deepseek 的出色表现&#xff0c;上期【Deepseek得两种访问方式与本地部署】 安装Continue插件 第一步、下载插件 在编辑栏【File】->设置【Settiings】或快捷键【CtrlAltS】,弹窗的左侧导航树&#xff0c;选择【plugins】,在marketplace 搜索【Continue】&#xff0c;点…...

Ubuntu如何利用.ibd文件恢复MySQL数据?

## 背景&#xff1a;服务器中&#xff0c;MySQL程序坏了&#xff0c;也没有做定时备份的操作。为了是数据库恢复到最新的。 ## 方法&#xff1a;可以使用MySQL的 .ibd 文件恢复。&#xff08;需要原数据库的表结构&#xff09; ## 文件位置&#xff1a;在Ubuntu系统中&#x…...

github上文件过大无法推送问题

GitHub 对文件大小有限制&#xff0c;超过 100 MB 的文件无法直接推送到仓库中。 解决思路&#xff1a; 使用 Git Large File Storage (Git LFS) 来管理大文件不上传对应的大文件 使用Git LFS&#xff1a; 1. 安装 Git LFS 首先&#xff0c;你需要安装 Git LFS。可以按照以…...

数据结构------单向链表。

一.实现单向链表的头插&#xff0c;头删&#xff0c;尾插&#xff0c;尾删&#xff0c;按位置插&#xff0c;按位置删&#xff0c;按位置修改&#xff0c;按元素查找&#xff0c;按元素修改&#xff0c;按元素删除&#xff0c;单链表的逆置&#xff0c;查找倒数第几个元素&…...

(.text+0x1b): undefined reference to `main‘

使用vscode Linux g编译出现 /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o: in function _start: (.text0x1b): undefined reference to main collect2: error: ld returned 1 exit status make: *** [makefile:3: put] Error 1一定记得…...

各类系统Pycharm安装教程

各类系统Pycharm安装教程 一、安装前的准备 1. 系统要求 操作系统: Windows:Windows 10 或更高版本(64位)。macOS:macOS 10.14 或更高版本。Linux:Ubuntu 18.04+、Fedora 30+ 等主流发行版。硬件要求: 内存:至少 4GB(推荐 8GB 以上)。磁盘空间:至少 2.5GB 可用空间…...

算法——结合实例了解Minimax算法(极小化极大算法)

计算机科学中最有趣的事情之一就是编写一个人机博弈的程序。有大量的例子&#xff0c;最出名的是编写一个国际象棋的博弈机器。但不管是什么游戏&#xff0c;程序趋向于遵循一个被称为Minimax算法&#xff0c;伴随着各种各样的子算法在一块。本篇将简要介绍 minimax 算法&#…...

cornerstone3D学习笔记-MPR

最近在研究如何利用cornerstone3D (v1.70.13) 来实现MPR功能&#xff0c;找到它的一个demo -- volumeBasic, 运行效果如下图 看了下主程序的示例代码&#xff0c;非常简单&#xff0c;可以说corestone3D这个库把很多细节都封装起来了&#xff0c;使得调用者可以很简单的快速实…...

向量数据库是什么?「向量数据库详解」

目录 向量数据库详解 一、定义与核心概念 二、核心技术与组件 三、应用场景 四、与传统数据库的对比 五、典型技术框架 六、优缺点分析 七、AI领域的最新应用案例 八、总结 向量数据库详解 一、定义与核心概念 向量数据库是专门用于存储、检索和处理向量数据的数据库…...

C++ Primer 函数匹配

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…...

Dav_笔记14:优化程序提示 HINTs -4

指定全局表提示 指定表的提示通常是指发生提示的DELETE&#xff0c;SELECT或UPDATE查询块中的表&#xff0c;而不是指语句引用的任何视图中的表。 如果要为显示在视图中的表指定提示&#xff0c;Oracle建议使用全局提示&#xff0c;而不是在视图中嵌入提示。 您可以使用包含具…...

功率因素和电费的关系

功率因数与电费之间存在直接的关系&#xff0c;具体体现在功率因数调整电费上。 功率因数调整电费的定义 功率因数调整电费是指根据用户功率因数的水平高低&#xff0c;对用户的电费进行减收或增收的费用。这种调整机制旨在鼓励用户提高功率因数&#xff0c;减少无功功率的消…...

桥接模式 Bridge Pattern

桥接模式Abstraction 和 Implementor 的理解 在图书馆看到一本 通过电商项目真正实战《贯穿设计模式》。拿起来翻到了 桥接模式&#xff0c;感觉味道不对&#xff0c;和我印象中不一样。 感谢这位同学提供的源码 贯穿设计模式-适配器模式桥接模式_-CSDN博客GitHub - WeiXiao…...

C# SpinLock 类 使用详解

总目录 前言 SpinLock 是 C# 中一种轻量级的自旋锁&#xff0c;属于 System.Threading 命名空间&#xff0c;专为极短时间锁竞争的高性能场景设计。它通过忙等待&#xff08;自旋&#xff09;而非阻塞线程来减少上下文切换开销&#xff0c;适用于锁持有时间极短&#xff08;如…...

Ubuntu 安装 OpenCV (C++)

版本详情&#xff1a; Ubuntu: 22.04 5.15.0-133-generic gcc: 11.4.0 g: 11.4.0 OpenCV: 4.7.0 1. 卸载 OpenCV 进入原先编译 opencv 的 build 目录&#xff0c;在该目录下打开终端&#xff0c;执行以下代码&#xff08;如果 build 已经删除了&#xff0c;可以重新编译一…...

推荐两个比较好用的流程图js库

React Flow 和 Logic Flow 是两个用于构建流程图的 JavaScript 库&#xff0c;适用于不同的场景和需求。以下是它们的简要介绍和对比&#xff1a; React Flow React Flow 是一个基于 React 的流程图库&#xff0c;专注于构建高度可定制的节点和边。它适用于需要复杂交互和数据…...

前端模板引擎

前言 正常渲染拿到数据后渲染&#xff0c;三步走&#xff1a;格式化数据、编译模板、渲染数据 如下例 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice…...

Linux /dev/null

/dev/null 是 Linux 和类 Unix 系统中一个特殊且非常有用的设备文件&#xff0c;也被称为空设备。下面为你详细介绍它的特点、用途和使用示例。 特点 写入丢弃&#xff1a;当向 /dev/null 写入数据时&#xff0c;这些数据会被立即丢弃&#xff0c;不会被保存到任何地方&#…...

ubuntu安装docker 无法拉取问题

sudo docker run hello-world [sudo] ubuntu 的密码&#xff1a; Unable to find image hello-world:latest locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded (Client.Timeout exceeded while awai…...

深入理解Kubernetes:容器编排的中流砥柱

Kubernetes容器编排 在云原生技术蓬勃发展的当下&#xff0c;Kubernetes&#xff08;简称K8s&#xff09;已成为容器编排领域的事实标准&#xff0c;为现代应用的部署、管理与扩展提供了强大支持。 K8s的核心优势之一是其卓越的容器编排能力 在传统应用部署模式下&#xff0c;…...

长尾词SEO优化软件:企业官网流量提升的软件【实测】

搜索引擎流量中68%来自长尾关键词&#xff08;数据来源&#xff1a;Ahrefs 2025&#xff09;&#xff0c;但83%企业仍困于「高价值长尾词难挖掘内容生产跟不上」的双重困境。当同行用智能工具批量布局「孕妇防辐射服哪个牌子好」等精准词时&#xff0c;手动分析数据的你可能还在…...

用自己的数据训练yolov11目标检测

文章目录 概要理论知识整体架构流程架构优化多任务支持多参数体量 操作实操环境配置数据准备数据标注数据放置路径 训练预测 概要 YOLOv11 是 Ultralytics 团队于 2024 年 9 月 30 日发布的最新目标检测模型&#xff0c;延续了 YOLO 系列实时推理特性&#xff0c;同时通过架构优…...

gsoap实现webservice服务

gsoap实现webservice服务 在实现Web服务时&#xff0c;使用gSOAP是一个很好的选择&#xff0c;因为它提供了强大的工具和库来创建SOAP和RESTful服务。gSOAP是一个C和C语言开发的库&#xff0c;它支持SOAP协议的各种版本&#xff0c;包括SOAP 1.1和SOAP 1.2。下面是如何使用gSO…...

相比于WebSocket,SSE更适合轻量级

一、 前言 项目首页有一个待办任务数量和消息提醒数量的展示&#xff08;单向数据的展示 &#xff09;&#xff0c;之前使用了定时器&#xff0c;每隔十秒钟发送一次请求到后端接口拿数据&#xff0c;这也就是我们常说的轮询做法。 1. 轮询的缺点 我们都知道轮询的缺点有几种…...

项目2 数据可视化--- 第十五章 生成数据

数据分析是使用代码来探索数据内的规律和关联。 数据可视化是通过可视化表示来 探索和呈现数据集内的规律。 好的数据可视化&#xff0c;可以发现数据集中未知的规律和意义。 一个流行的工具是Matplotlib&#xff0c;他是一个数据绘图库&#xff1b; 还有Plotly包&#xff…...

【Maven私服配置】

Maven私服配置 对于一些中央的pom&#xff0c;应该配置对应的mirror镜像访问 <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirr…...

QT (四)模型/视图 QFileSystemModel,QStringListModel,QStandardItemModel

思考&#xff1a;QTableWidget 在某种程度上可以等价为QStandardItemModel&#xff0c;同理&#xff0c;其他的功能也有类似的等价&#xff0c;但是以当前的QTableWidget 和QStandardItemModel为例的话&#xff0c;两者都是用于实现建立表格的相关组件&#xff0c;只不过QStand…...

BSD实现:单播

分用单播数据报 如果程序执行到这里&#xff0c;说明程序并没有执行多播操作&#xff0c;那么大概率是单播。 维护缓存指针 udp_last_inpcb是上一次接收数据报的端口的控制块指针&#xff0c;维护该指针的依据是许多程序往往具有时间局部性&#xff0c;也就是&#xff1a;经…...