自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 【Rust学习】Rust数据类型,函数,条件语句,循环

println!("x 的值为 : {}", x);println!("y 的值为 : {}", y);

2025-04-05 14:01:04 584 1

原创 【Rust学习】Rust环境搭建和Rust基础语法

rustup-init.exe 是 Rust 的安装和管理工具,默认情况下,它会同时安装这些工具:rustc,rust-std,cargo,rust-docs,rustfmt,clippy。其中,rustc 是 Rust 的编译工具,cargo 是 Rust 的包管理工具。使用这两个函数打印信息的时候,第一个参数是格式字符串,后面一串是可变参数,在C语言printf中"%+字母"表示占位符,而在Rust中,使用'{ }'可以使用相同名字声明新的变量,新的变量就会隐藏(shadow)之前的同名变量。

2025-04-05 11:06:28 383 13

原创 【Linux系统编程】进程概念,进程状态

以scanf为例,当执行scanf从键盘读取数据时,未输入数据时,操作系统会将当前进程的task_struct从调度队列中移除,放入设备的阻塞队列中,此时,该进程就处于阻塞状态。每个进程可能会存在不同的状态,有的进程正在运行,有的进程正在被调度,有的进程处于挂起等等。CPU要执行这些进程,这些进程的task_struct中会保存指向代码和数据的指针。系统调用在使用上,功能比较基础,对用户的要求相对较高,所以,有心的开发者会对部分系统调用做封装,从而形成库,有了库,就很方便上层用户和开发者进行二次开发。

2025-04-04 17:21:56 896 13

原创 动态规划学习——回文子串系列问题【C++】

题目链接:LCR 020. 回文子串 - 力扣(LeetCode) 【问题描述】求一个字符串中有多少个回文子串,其中一个字符也算是一个回文子串。【解法】动态规划求一个字符串中回文子串的个数,我么可以找到每个回文子串,然后统计个数即可。初始化dp表时,根据状态表示的定义,我们只会用到dp表主对角线的右上部分,左下部分不会用到,对于状态转移dp[i][j]=dp[i+1][j-1],我们不需要考虑越界的问题,因为前两种情况已经做了判断。 最后,只需统计dp表中dp[i][j]==true的数量即可。【代码】

2025-04-02 21:12:37 904 22

原创 动态规划学习——背包问题

题目链接:P1060 [NOIP 2006 普及组] 开心的金明 - 洛谷 本题是一道经典的01背包问题,状态表示和状态定义可以仿照01背包的来。dp[i][j]表示从前i个物品中选,总价值不超过n,并且使得每件物品的价格与重要度的乘积的总和最大。【代码】二,金明的预算方案题目链接:P1064 [NOIP 2006 提高组] 金明的预算方案 - 洛谷本题在上题的基础上,增加了一个限制,选择一个物品,这个物品可能是某个物品的附属品,在选该物品时,必须先买主件。且每个主件最多包含两个附件。然后继续按照

2025-03-31 22:04:31 1408 7

原创 【MySQL篇】事务管理,事务的特性及深入理解隔离级别

先思考一个场景,在一个火车票购票系统中,西安到郑州的火车票只剩下一张,两个用户进行买票,可以想象成这两个用户对表中数据进行CURD,而如果这些CURD不加控制,会不会出现问题?当客户端A检查到还有一张票时,将票卖掉,还没有 执行更新数据库的语句时,客户端B检查了票数,发现大于0,于是又买了一次票。然后 A将票数更新回数据库。这就出现了同一张票被买了2次的问题。为了解决上述的问题,就需要CURD操作满足 如下的属性:1,买票的过程需要是原子的2,买票之间不能互相影响。

2025-03-29 17:05:42 836 21

原创 买卖股票的最佳时机问题 C++

【题目描述】有一个价格数组prices,表示第i天的股票价格为prices[i],整个过程只能买入股票和卖出股票一次。并且买入股票必须再卖出股票之前。 【思路】贪心我们可以遍历一次数组,遍历到prices[i],表示在第i天卖出股票,为了使利益最大,我们需要在前i-1天中选择股票价格最低的一天买入。可以使用一个变量leftMin来记录前i-1天中,股票最低的价格。那么此时的最大利益就是prices[i]-leftMin。动态规划dp[n][2]:dp[i][0]表示第i天未持有股票的最大利益,dp[i

2025-03-28 21:26:27 849 5

原创 矩阵中对角线的遍历问题【C++】

对角线的遍历(主对角线):对于一个m*n的矩阵。在同一条对角线上的元素,行号i减去列号j是一个定值。k=i-j+n;k的值从1开始到m+n-1。就是主对角线从右上角对角线开始,一直到左下角对角线。遍历对角线时,我们只需求出j的范围即可,i=k+j-n。但需要注意j不能小于0,也不能超出数组的范围。然后就可以对这条对角线进行操作了。

2025-03-26 21:26:16 1101 12

原创 【MySQL篇】索引特性,索引的工作原理以及索引的创建与管理

对于一个page目录,它的大小是16KB,假设忽略掉前后指针,该page只存储一个数据和对应的指针,在64位环境下,16*1024/(4+8)=1365。通过“先描述,再组织”。在单表数据不断被插入 的情况下,MySQL会在容量不足的时候,自动开辟新的page来保存新的数据,然偶通过指针的方式马,将所有page组织起来。但是查询速度的提高,同时是以插入,更新,和删除的速度为代价的,这些写操作,增加了大量的IO。MySQL的CURD操作,都是需要计算的,找到对应的插入位置,找到对应要修改或者查询的数据。

2025-03-22 19:19:36 1007 22

原创 LeetCode.2612最少翻转次数C++

假设下标i经过一次翻转后的下标为j,这个下标j肯定不是一个特定的下标,它代表翻转后的所有可能的下标。i>n-k的情况,当子数组在整个数组的最右边时,L=n-k,R=n-1。翻转后的下标为j=L+R-i=2*n-k-i-1。例如 对于k=4,长度为4的子数组,右端点最小是k-1=3,当i=0,1,2,i不可能是数组的右端点;i<k-1的情况,当子数组在整个数组的最左边时,L=0,R=k-1。i位置经过一次翻转后的下标为j,将i和j看成是用一条边连接,这条边的边权为1,代表翻转次数。也可以右移L-1,R-1。

2025-03-21 13:45:38 949 2

原创 【算法学习】最小公倍数问题

公式推导。处理零的情况如果任一数为零,直接返回 0(因为零和任何数的 LCM 是零)。防止整数溢出将a * b转换为long long类型,避免乘法溢出(例如a = 1e9b = 1e9处理负数使用std::abs保证计算的数值为正,避免符号干扰。2,辗转相减法若a>b,则a=a-b(大的数减去小的数)若a=b,则a或b就是最大公约数如求35和14的两个最小公倍数:35-14=21;21-14=7;此时7小于14,要做一次交换14-7=7;7-7=0;

2025-03-20 12:42:14 839 3

原创 【MySQL篇】复合查询

基于上篇MySQL基本查询,基本上都是对一张表进行查询。【MySQL篇】MySQL基本查询详解-优快云博客复合查询是处理复杂业务逻辑的核心技能 ,本篇涵盖多表查询,子查询和合并查询等复杂场景。

2025-03-19 16:19:07 824 15

原创 元音辅音字符串计数leetcode3305,3306

暴力解法的思路,我们每次在用两个变量来枚举[i,j]这个子串时,统计完后,i++,j还要再返回i的位置,重新遍历,所以时间复杂度太高, 为O(N^2)。其中可以使用set集合判断子串中是否每个元音字母都出现,用一个变量count来统计辅音字母的出现次数。该思路,只能通过第一题, 第二题的数据范围大,会超时。暴力枚举出所有子字符串 ,统计所有满足。

2025-03-15 16:02:30 514 5

原创 【MySQL篇】MySQL内置函数

插入数据。

2025-03-12 17:49:28 6003 16

原创 【MySQL篇】基本查询实战OJ

distinct去重+order by 排序。group by子句及聚合函数。group by子句+聚合函数。

2025-03-12 15:43:37 309 1

原创 【MySQL篇】MySQL基本查询详解

where chinese>80 and name not like '孙%';

2025-03-11 12:34:32 5712 10

原创 leetcode2070. 每一个查询的最大美丽值

看完本题,可以想到的思路是对于每一个查询queries[j],去遍历items数组,找到所有满足items[i][0]小于queries[j]的部分,再比较求出最大的items[i][1]即可。对于每一次的查询,最坏情况下每次需要遍历items数组一遍,时间复杂度太高,需要优化查询。

2025-03-10 23:58:35 303 1

原创 k倍区间 | 哈希 分巧克力 | 二分 青蛙跳杯子 | BFS

求有多少个连续区间满足,所有数字的和模k=0,也就是k的倍数。

2025-03-09 23:27:44 349 3

原创 可被3整除的最大和 || 贪心,动态规划

初始化时f[0][0]=0,表示没选任何数字,初始化为0,f[0][1]=f[0][2]=INT_MIN,无意义,为了不影响计算。初始化为无穷小。

2025-03-08 10:36:40 482 1

原创 【MySQL篇】表的约束

在MySQL中,表的约束用于强制保证数据的完整性和一致性。在数据库表中,真正约束字段的是数据类型优快云但是数据类型的约束很单一,所以需要一些额外的约束,来保证数据的完整性和正确性。

2025-03-06 13:32:51 902 15

原创 【动态规划学习】区间dp

区间dp,就是在一段区间上进行动态规划,求解一段区间的最优解。最后合并小区间上的最优解从而得到全局最优解的算法。【问题引入】

2025-03-03 10:51:30 1238 12

原创 【MySQL篇】数据类型

unsigned。

2025-03-01 18:45:15 1496 18

原创 【MySQL篇】表的操作

不同的存储引擎,创建表的文件不一样。

2025-02-26 16:21:00 387 1

原创 【MySQL篇】MySQL操作库

在我们创建一个数据库后,在linux下,就是在var/lib/mysql路径下创建一个目录,在该目录下,有一个文件db.opt,该文件有该数据库采用的字符集和校验规则。时,系统使用默认字符集utf8,校验规则是utf8_general_ci。创建一个数据库,使用utf8_general_ci校验规则不区分大小写。创建一个数据库,使用utf8_bin校验规则不区分大小写。对数据库的修改主要 指的是修改数据库的。创建数据库,在lunix层面就是在。说明:当我们创建数据库没有指明。路径下创建一个目录。

2025-02-25 11:48:51 968 10

原创 【算法与数据结构】Dijkstra算法求单源最短路径问题

Dijkstra算法,是用来算出图中一个顶点到其余各顶点的最短路径。适合于解决带权的有向图中的单源最短路径问题。

2025-02-24 23:06:15 886 6

原创 【MySQL篇】数据库基础

数据库(Database,简称DB)是按照数据结构来组织、存储和管理数据的仓库。它是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库管理系统(DBMS)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。常见的数据库管理系统有MySQL、SQL Server、Oracle等。存储数据用文件就可以了,为什么还要弄个数据库?一般的文件确实提供了数据的存储功能,但是没有提供非常好的数据管理能力。

2025-02-23 19:23:14 2635 2

原创 【算法与数据结构】单调队列

是一种特殊的队列,队列中的元素按严格递增或者递减排列。这样就可以保证队头元素始终是最大值或者最小值。【问题引入】有一个数组,长度为n,给你一个区间[left,right],求出该区间内的最小值或者最大值。我们如果进行普通的遍历,最坏的情况下时间复杂度是O(N),遍历整个数组。而我们如果用单调队列来维护这段区间,始终保持队列的单调性,就可以在O(1)的时间内找到该区间的最大值或者最小值,就是。【结论】

2025-02-22 16:45:11 1051 16

原创 【算法与数据结构】字典树(Trie)详解

字典树通过。

2025-02-18 20:45:23 1134 14

原创 【算法与数据结构】并查集详解+题目

核心概念:并查集是一种 用于管理元素分组的数据结构。在一些应用问题中,需将n个不同的元素划分成一些不相交的集合,开始时,n个元素各自成一个集合,然后按照一定规律将部分集合合成一个集合,也就是集合合并。并查集(union-find)适合来描述这类问题。对于并查集,我们可以将它看成是一个森林,森林是由多棵树组成的,并查集中的一个个集合就可以看作是树。

2025-02-15 23:08:20 1134 6

原创 【算法学习】DFS与BFS

从A开始遍历,再到B,有两种情况,意味着这条路还没有走完,接着走到D,之后就没路了。然后我就回溯到B,因为B还有情况没走完,接着再走到E,之后没路了,就回溯到B,发现B的两种情况以及那个走完了,就再回溯到A,然后走到C......最初,有一个人位于左上角(1,1)处,已知改人每次可以向上,下,做,右任意一个方向移动一个位置。给的那个一个n*m的二维整数数组,用来表示迷宫,数组中只包含1和0,0表示可以走的路,1表示不可以通过的墙壁。简单理解就是:一条路走动黑,直到没路可走了,再回溯回去,尝试其他路径。

2025-02-12 14:51:29 1553 13

原创 【算法学习】拓扑排序(Topological Sorting)

两种算法均能高效实现拓扑排序,时间复杂度均为O(V+E),V为顶点数,E为边数。若节点类型为int,可将unordered_map替换为vector提升性能。

2025-02-11 14:17:49 728 9

原创 【C++篇】智能指针

以管理Date类为例:class Datepublic:{}~Date()private:int _year;int _month;int _day;public://构造函数:_ptr(ptr){}//......//......private:T* ptr;

2025-02-09 17:33:07 792 10

原创 【C++篇】 异常处理

异常处理是C++用于管理 程序运行时错误的核心机制,通过等关键字实现。它允许将错误检测与处理逻辑分离,提升代码的可读性和健壮性。

2025-02-09 11:05:14 1144 2

原创 【C++篇】C++11新特性总结2

c++11新特性,lambda,包装器

2025-02-08 13:58:22 723 1

原创 【C++篇】C++11新特性总结1

public:// 移动构造函数// 移动赋值运算符if (this!// 调用移动构造函数// 调用移动赋值运算符return 0;

2025-02-07 16:24:32 1044 6

原创 【算法篇】贪心算法

对于nums数组中的两个元素a和b, 我们无法直接确定他们的先后关系,但我们可以从结果角度来看,如果拼接结果ab要比ba好,那么a就应该放在b的前面。cout << signle_money[i] << "元:" << total[i] << "张" << endl;给你一个矩阵,求解:从矩阵的左上角出发,只能向下和向右两个方向走,求到达矩阵的右下角过程中,路径上所有元素和的最小值。贪心策略:想要使尽量多的活动不冲突,那我们在选择活动时,就尽量选择结束早的活动,为后续留出更多的时间。

2025-02-05 16:53:48 3171 3

原创 【C++篇】位图与布隆过滤器

有一些场景,由大量数据需要判断是否存在,而这些数据不是整形,比如string,就不能使用位图了,这些场景就需要布隆过滤器来解决。利用多个哈希函数和位图实现,哈希函数内容见上篇文章【哈希表】。核心原理位数组(Bit Array):长度为 m 的二进制数组,初始全为0。哈希函数集合:k个独立的哈希函数,每个函数将元素映射到位数组的某个位置。以string类型为例:而这种冲突是无法避免的,因为位图中只存储了状态,即0或1,无法改变。所以我们只能做到降低冲突概率,对于一个字符串,让它映射到多个位置上。

2025-02-03 19:14:41 933 9

原创 【背包问题】二维费用的背包问题

常规的0-1背包问题可以用动态规划来解决,状态通常是dp[i][j]表示前i个物品,在容量j下的最大价值。对于二维费用的情况,可能需要扩展状态到两个维度。比如,状态可能是dp[i][j][k],表示前i个物品,在重量限制j和体积限制k下的最大价值。但这样的话,状态空间会变得很大,尤其是当j和k都较大的时候,时间和空间复杂度可能很高。不过,可能可以通过优化来减少空间的使用,比如使用滚动数组。

2025-02-02 11:50:31 736 3

原创 【C++篇】哈希表

如下图,我们删除30,会导致查找20失败,当我们给每个位置加⼀个状态标识{EXIST,EMPTY,DELETE},删除30就可以不用删除值,而是把状态改为DELETE,那么查找20时遇到EMPTY才停,就可以找到20。,如果key可以转换为整形并且不容易冲突,那么这个仿函数就用默认参数即可,如果这个Key不能转换为整形我们就需要自己实现⼀个仿函数传给这个参数,实 现这个仿函数的要求就是尽量key的每个值都参与到计算中,让不同的key转换出的整形值不同。负载因子越小,代表哈希冲突的概率越低,空间利用率越低。

2025-02-01 22:05:29 2069 3

原创 【背包问题】多重背包+分组背包

本文承自上篇完全背包和01背包。

2025-02-01 15:55:19 874

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除