刷题日记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. 最短且字典序最小的美丽子字符串 - 力扣(LeetCode) class Solution { public:string shortestBeautifulSubstring(string s, int k) {//遍历找到美丽子字符串,更新时候如果<res&…...
在vscode中拉取gitee里的项目并运行
拉取项目: 方法一:vscode点击查看--->终端(或者直接通过快捷键ctrol+ `打开) 在终端内通过cd命令定位到你想存放项目的文件夹 例如:cd h: 通过命令:git clone 地址 例如:git clone newbee-mall-vue-app: 前端代码 等待拉取完成即可在对应文件夹下看到项目啦 方…...
IDEA通过Contince接入Deepseek
Deepseek 的出色表现,上期【Deepseek得两种访问方式与本地部署】 安装Continue插件 第一步、下载插件 在编辑栏【File】->设置【Settiings】或快捷键【CtrlAltS】,弹窗的左侧导航树,选择【plugins】,在marketplace 搜索【Continue】,点…...
Ubuntu如何利用.ibd文件恢复MySQL数据?
## 背景:服务器中,MySQL程序坏了,也没有做定时备份的操作。为了是数据库恢复到最新的。 ## 方法:可以使用MySQL的 .ibd 文件恢复。(需要原数据库的表结构) ## 文件位置:在Ubuntu系统中&#x…...
github上文件过大无法推送问题
GitHub 对文件大小有限制,超过 100 MB 的文件无法直接推送到仓库中。 解决思路: 使用 Git Large File Storage (Git LFS) 来管理大文件不上传对应的大文件 使用Git LFS: 1. 安装 Git LFS 首先,你需要安装 Git LFS。可以按照以…...
数据结构------单向链表。
一.实现单向链表的头插,头删,尾插,尾删,按位置插,按位置删,按位置修改,按元素查找,按元素修改,按元素删除,单链表的逆置,查找倒数第几个元素&…...
(.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算法(极小化极大算法)
计算机科学中最有趣的事情之一就是编写一个人机博弈的程序。有大量的例子,最出名的是编写一个国际象棋的博弈机器。但不管是什么游戏,程序趋向于遵循一个被称为Minimax算法,伴随着各种各样的子算法在一块。本篇将简要介绍 minimax 算法&#…...
cornerstone3D学习笔记-MPR
最近在研究如何利用cornerstone3D (v1.70.13) 来实现MPR功能,找到它的一个demo -- volumeBasic, 运行效果如下图 看了下主程序的示例代码,非常简单,可以说corestone3D这个库把很多细节都封装起来了,使得调用者可以很简单的快速实…...
向量数据库是什么?「向量数据库详解」
目录 向量数据库详解 一、定义与核心概念 二、核心技术与组件 三、应用场景 四、与传统数据库的对比 五、典型技术框架 六、优缺点分析 七、AI领域的最新应用案例 八、总结 向量数据库详解 一、定义与核心概念 向量数据库是专门用于存储、检索和处理向量数据的数据库…...
C++ Primer 函数匹配
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
Dav_笔记14:优化程序提示 HINTs -4
指定全局表提示 指定表的提示通常是指发生提示的DELETE,SELECT或UPDATE查询块中的表,而不是指语句引用的任何视图中的表。 如果要为显示在视图中的表指定提示,Oracle建议使用全局提示,而不是在视图中嵌入提示。 您可以使用包含具…...
功率因素和电费的关系
功率因数与电费之间存在直接的关系,具体体现在功率因数调整电费上。 功率因数调整电费的定义 功率因数调整电费是指根据用户功率因数的水平高低,对用户的电费进行减收或增收的费用。这种调整机制旨在鼓励用户提高功率因数,减少无功功率的消…...
桥接模式 Bridge Pattern
桥接模式Abstraction 和 Implementor 的理解 在图书馆看到一本 通过电商项目真正实战《贯穿设计模式》。拿起来翻到了 桥接模式,感觉味道不对,和我印象中不一样。 感谢这位同学提供的源码 贯穿设计模式-适配器模式桥接模式_-CSDN博客GitHub - WeiXiao…...
C# SpinLock 类 使用详解
总目录 前言 SpinLock 是 C# 中一种轻量级的自旋锁,属于 System.Threading 命名空间,专为极短时间锁竞争的高性能场景设计。它通过忙等待(自旋)而非阻塞线程来减少上下文切换开销,适用于锁持有时间极短(如…...
Ubuntu 安装 OpenCV (C++)
版本详情: Ubuntu: 22.04 5.15.0-133-generic gcc: 11.4.0 g: 11.4.0 OpenCV: 4.7.0 1. 卸载 OpenCV 进入原先编译 opencv 的 build 目录,在该目录下打开终端,执行以下代码(如果 build 已经删除了,可以重新编译一…...
推荐两个比较好用的流程图js库
React Flow 和 Logic Flow 是两个用于构建流程图的 JavaScript 库,适用于不同的场景和需求。以下是它们的简要介绍和对比: React Flow React Flow 是一个基于 React 的流程图库,专注于构建高度可定制的节点和边。它适用于需要复杂交互和数据…...
前端模板引擎
前言 正常渲染拿到数据后渲染,三步走:格式化数据、编译模板、渲染数据 如下例 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice…...
Linux /dev/null
/dev/null 是 Linux 和类 Unix 系统中一个特殊且非常有用的设备文件,也被称为空设备。下面为你详细介绍它的特点、用途和使用示例。 特点 写入丢弃:当向 /dev/null 写入数据时,这些数据会被立即丢弃,不会被保存到任何地方&#…...
ubuntu安装docker 无法拉取问题
sudo docker run hello-world [sudo] ubuntu 的密码: 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容器编排 在云原生技术蓬勃发展的当下,Kubernetes(简称K8s)已成为容器编排领域的事实标准,为现代应用的部署、管理与扩展提供了强大支持。 K8s的核心优势之一是其卓越的容器编排能力 在传统应用部署模式下,…...
长尾词SEO优化软件:企业官网流量提升的软件【实测】
搜索引擎流量中68%来自长尾关键词(数据来源:Ahrefs 2025),但83%企业仍困于「高价值长尾词难挖掘内容生产跟不上」的双重困境。当同行用智能工具批量布局「孕妇防辐射服哪个牌子好」等精准词时,手动分析数据的你可能还在…...
用自己的数据训练yolov11目标检测
文章目录 概要理论知识整体架构流程架构优化多任务支持多参数体量 操作实操环境配置数据准备数据标注数据放置路径 训练预测 概要 YOLOv11 是 Ultralytics 团队于 2024 年 9 月 30 日发布的最新目标检测模型,延续了 YOLO 系列实时推理特性,同时通过架构优…...
gsoap实现webservice服务
gsoap实现webservice服务 在实现Web服务时,使用gSOAP是一个很好的选择,因为它提供了强大的工具和库来创建SOAP和RESTful服务。gSOAP是一个C和C语言开发的库,它支持SOAP协议的各种版本,包括SOAP 1.1和SOAP 1.2。下面是如何使用gSO…...
相比于WebSocket,SSE更适合轻量级
一、 前言 项目首页有一个待办任务数量和消息提醒数量的展示(单向数据的展示 ),之前使用了定时器,每隔十秒钟发送一次请求到后端接口拿数据,这也就是我们常说的轮询做法。 1. 轮询的缺点 我们都知道轮询的缺点有几种…...
项目2 数据可视化--- 第十五章 生成数据
数据分析是使用代码来探索数据内的规律和关联。 数据可视化是通过可视化表示来 探索和呈现数据集内的规律。 好的数据可视化,可以发现数据集中未知的规律和意义。 一个流行的工具是Matplotlib,他是一个数据绘图库; 还有Plotly包ÿ…...
【Maven私服配置】
Maven私服配置 对于一些中央的pom,应该配置对应的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
思考:QTableWidget 在某种程度上可以等价为QStandardItemModel,同理,其他的功能也有类似的等价,但是以当前的QTableWidget 和QStandardItemModel为例的话,两者都是用于实现建立表格的相关组件,只不过QStand…...
BSD实现:单播
分用单播数据报 如果程序执行到这里,说明程序并没有执行多播操作,那么大概率是单播。 维护缓存指针 udp_last_inpcb是上一次接收数据报的端口的控制块指针,维护该指针的依据是许多程序往往具有时间局部性,也就是:经…...
