自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Leetcode 2981

【代码】Leetcode 2981。

2024-05-29 10:15:31 253

原创 Leetcode 2028

然后可以得出n * (sum_t / n ) <= sum;需要对余数mod进行调整,为了减少调整的次数,每次尽量向上调整;最终调整完之后 mod 必须为0;:1-6之间的的n个数组合起来要变成sum_t = mean*(rolls.size()+n) - sum(rolls);那么可以先假设每个数都是sum_t / n 其中这个数必须要在1 - 6 之间否者无法分配。

2024-05-27 21:19:17 391

原创 Leetcode 2831 找出最长等值数组

根据示例1:pos[3] = [1,3,5] 存放3的所有下标,在查找满足的数组时,我们可以用双指针去标记当前满足条件的子数组,用left表示前面 right表示后面 那么pos[rigth] 到 pos[left] 之间保持连续的话,应该删除的元素的个数pos[right] - pos[left] + 1 - (rigtht - left + 1);题目需要找的是一个子数组,这个子数组的元素都相等。那么可以将所有的相等的元素的下标都记录下来,然后去从中找出满足删除条件的最长数组。

2024-05-23 09:34:01 228

原创 Linux man 命令相关参数

man 命令用来查看手册页的工具,它的参数可以帮助你查看不同类型的手册页或者控制输出的格式等。通常,Linux 手册页被分成多个章节,每个章节对应不同类型的信息。

2024-04-15 19:12:51 207

原创 Makefile的相关使用

一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个日录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个she!本一样,其中也可以执行操作系统的命令。 Makefile带来的好处就是--"自动化编译",一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefle中指令的命令工具,一般来说,大多数的

2024-04-10 17:35:08 1648

原创 GDB调试器

需要调试的c/c++程序,首先在编译时,我们必须要吧调试信息加到可执行文件中。如果没有-g参数,你将看不见程序的函数名,变量名,所代替的全是运行时的内存地址。如果命名空间,可以使用namespace::class::function或者function(type,type)格式来指定函数名.设置一些自动显示的变量,当程序停止时,或者在单步时,这些变量会自动显示,相关GDB吗,命令时display。一般时打印当前行的上5行和下5行,如果显示函数不是,可以设置一次显示源程序的行数。

2024-04-09 17:02:39 1479

原创 动态库制作和使用

共享库在程序编译并不会链接到目标代码中,实在程序运行是才被载入。不同的应用程序如果调用相同的库,那么在内存中只需要有一份共享库的实例,规避了空间浪费问题。动态库在程序运行被载入,解决了用户只需要更新动态库即可,增量更新。动态库文件以.so结尾通常最终的库名称是libxxx.so。

2024-04-09 14:54:25 440

原创 静态库制作和使用

将.a文件和头文件一起发布,假设测试文件为main.c 静态库文件为libxxx.a头文件为head.h。最终静态库的名称:libXXX.a。

2024-04-08 20:00:24 128

原创 享元设计模式

享元”就是被共享的单元。享元模式的使用意图就是复用对象,节省内存,应用的前提是被共享的对象是不可变对象。具体来说,就是当一个系统中存在大量的重复对象时,如果这些重复的对象时不可变对象,我们就可以利用享元模式,将对象设计成享元,在内存中只保留一份实例,供多处代码引用。这样就可以减少内存中对象的数量,起到节省内存的目的。实际上我们还能抽取相似对象,我们也可以将这些对象中相同的部分提取出来设计成享元,让这些相似的对象去引用享元。

2023-08-14 16:00:46 69

原创 组合设计模式

组合模式和面向对象中“组合关系”完全是两码事,这里的组合模式主要用于处理结构为树形的数据。对于组合模式其应用场景比较特殊,这种模式在实际的项目开发中并不常见。但是一旦数据呈现出树形结构,这种模式就能发挥出很大的作用,可以让代码变得简洁。

2023-08-13 10:42:03 64

原创 适配器设计模式

对于适配器模式,主要有两种实现方式:类适配器和对象适配器。适配器设计模式的一个重要的用途就是解决代码的不兼容问题。

2023-08-12 14:00:35 68

原创 代理设计模式

在实际的开发中,我们经常使用代理模式。在这主要讲述代理模式的两种实现方式:基于接口的实现方式和基于继承的实现方式以及动态代理。

2023-08-10 22:39:18 56

原创 设计模式之建造者模式---Builder Pattern

建造者模式也称为构建者模式或者生成器模式。在看这篇文章之前可以思考思考两个问题:直接使用构造函数或者配合setter方法就能创建对象,为什么还需要使用建造者模式呢?构建者模式和工厂模式都可以创建对象,他们又会有什么区别呢?在看完这篇文章你想必就会有答案了。在平时的开发中,创建一个对象的常用方式就是使用new关键字调用类的构造函数来完成,假设有这样一道代码设计方面的面试题:编写代码实现一个资源配置类ResourcePoolConfig,这里的资源配置池可以简单地被理解为线程池、连接池和对象池等。

2023-08-08 22:01:27 37

原创 设计模式之工厂设计模式---Factory Pattern

在简单工厂模式和工厂方法模式中,类只有一种分类方式。比如在我们上面提到的例子中,解析器只会根据配置文件的格式(JSON,XML,YAML等)来分类。但是,如果解析器有两种分类方式,既可以按照配置文件格式来分类,又可以按照解析的对象(规则配置或者系统配置)来分类,那么通过组合,就会得到8中解析器类。(1)针对规则配置的解析器(基于接口IRuleConfigParser的实现类)(2)针对系统配置的解析器(基于接口ISystemConfigParser的实现类)

2023-08-07 11:54:31 39

原创 设计模式之单例设计模式---Singleton Design Pattern

如果一个类只允许创建一个对象(实例),那么,这个类就是一个单例类,这种设计模式就是单例设计模式(Singleton Design Pattern)。从业务概念方面来讲,如果某个类包含的数据在系统中就保存一份,那么这个类应该被设计为单例类。例如配置信息类,在系统中,只因该有一个配置文件,当配置文件被加载到内存之后,以对象的形式存在,也理应只有一份。又例如唯一递增的ID生成器类,如果系统中存在两个ID生成器对象,那么有可能生成重复ID。

2023-08-05 19:02:28 80

原创 LeetCode 33(搜索旋转数组)

整数数组nums按升序排列,数组中的值。在传递给函数之前,nums在预先未知的某个下标k)上进行了,使数组变为(下标计数)。例如,在下标3处经旋转后可能变为。给你的数组nums和一个整数target,如果nums中存在这个目标值target,则返回它的下标,否则返回-1。你必须设计一个时间复杂度为O(log n)的算法解决此问题。

2023-08-05 11:40:14 160 1

原创 LeetCode 1911

仅有两个状态,加或者减,加地话那么当前就应该是偶数位次,那么上一次就是奇数位次。减地话那么当前就应该是奇数位次,上一次就是偶数位次。用dp[i][0]表示当前是偶数位次,dp[i][1]表示当前是奇数位次。本文还可状态压缩,来减少空间复杂度。实现比较简单就不再提供源码了。最后再取二者地较大值;

2023-07-11 11:01:11 34

原创 设计模式-c++

定义一系列算法,把它们一个个封装起来,并且使他们可互相相替换(变化)。该模式使得算法可独立于使用它们地客户程序(稳定)而变化(扩展,子类化)。Strategy及其子类为组件提供了一系列可重用的算法,从而可以使得类型在运行时方便地根据需要在各个算法之间进行切换。Strategy模式提供了用条件判断句以外地另一种选择,消除条件判断语句,就是在解耦合。含有许多判断语句地代码通常都需要Strategy模式。如果Strategy对象没有实列变量,那么各个上下文可以共享同一个Strategy对象,从而节省对象开销。

2023-07-10 17:27:24 50 1

原创 设计模式-c++

定义一系列算法,把它们一个个封装起来,并且使他们可互相相替换(变化)。该模式使得算法可独立于使用它们地客户程序(稳定)而变化(扩展,子类化)。Strategy及其子类为组件提供了一系列可重用的算法,从而可以使得类型在运行时方便地根据需要在各个算法之间进行切换。Strategy模式提供了用条件判断句以外地另一种选择,消除条件判断语句,就是在解耦合。含有许多判断语句地代码通常都需要Strategy模式。如果Strategy对象没有实列变量,那么各个上下文可以共享同一个Strategy对象,从而节省对象开销。

2023-07-10 16:36:14 126 1

原创 LeetCode 1031

【代码】LeetCode 1031。

2023-04-26 11:03:46 47

原创 MySQL进阶(包含事务、引擎、索引、锁等知识点)

MySQL的索引再存储引擎层实现,不同的引擎有不同的索引结构;[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mt44nckT-1682170047610)(file:///C:/Users/%E4%BB%AA/Pictures/Typedown/8cb90cd5-8820-42b4-a727-f47440a8ab0f.png)]MySQL中不同的引擎对应的索引结构;

2023-04-22 21:30:20 185

原创 LeetCode 1026

给定二叉树的根节点 root,找出存在于 不同 节点 A 和 B 之间的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。(如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先)输入:root = [8,3,10,1,6,null,14,null,null,4,7,13]输出:7解释:我们有大量的节点与其祖先的差值,其中一些如下:在所有可能的差值中,最大值 7 由 |8 - 1| = 7 得出。

2023-04-18 11:34:08 65

原创 LeetCode 2409

Alice 和 Bob 计划分别去罗马开会。给你四个字符串 arriveAlice ,leaveAlice ,arriveBob 和 leaveBob。Alice 会在日期 arriveAlice 到 leaveAlice 之间在城市里(日期为闭区间),而 Bob 在日期 arriveBob 到 leaveBob 之间在城市里(日期为闭区间)。每个字符串都包含 5 个字符,格式为 "MM-DD" ,对应着一个日期的月和日。请你返回 Alice和 Bob 同时在罗马的天数。

2023-04-17 12:18:41 112

原创 LeetCode 1023

来源:力扣(LeetCode)链接:https://leetcode.cn/problems/camelcase-matching著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2023-04-14 11:01:02 40

原创 LeetCode 2404

给你一个整数数组nums,返回出现最频繁的偶数元素。如果存在多个满足条件的元素,只需要返回的一个。如果不存在这样的元素,返回-1。

2023-04-13 10:54:55 45

原创 LeetCode 1147

你会得到一个字符串 text。你应该把它分成 k 个子字符串 (subtext1, subtext2,…, subtextk) ,要求满足:subtexti 是 非空 字符串所有子字符串的连接等于 text ( 即subtext1 + subtext2 + ... + subtextk == text )对于所有 i 的有效值( 即 1

2023-04-12 11:00:49 46

原创 LeetCode 1041

来源:力扣(LeetCode)链接:https://leetcode.cn/problems/robot-bounded-in-circle著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2023-04-11 11:48:15 86

原创 LeetCode 1019

给定一个长度为 n 的链表 head对于列表中的每个节点,查找下一个 更大节点 的值。也就是说,对于每个节点,找到它旁边的第一个节点的值,这个节点的值 严格大于 它的值。返回一个整数数组 answer ,其中 answer[i] 是第 i 个节点( 从1开始 )的下一个更大的节点的值。如果第 i 个节点没有下一个更大的节点,设置 answer[i] = 0。来源:力扣(LeetCode)

2023-04-10 20:30:57 39

原创 LeetCode 1053

给你一个正整数数组 arr(可能存在重复的元素),请你返回可在 一次交换(交换两数字 arr[i] 和 arr[j] 的位置)后得到的、按字典序排列小于 arr 的最大排列。这样我们就把问题转化为求i的位置即可,i的元素的位置我们采用贪心的策略,只需要找到最晚降序的那个元素的位置就是i的位置。采用贪心的策略,假设我们要换第i个元素,那么我们只需要找到第i个元素后面小于当前元素的最大的那个元素进行交换即可。著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。如果无法这么操作,就请返回原数组。

2023-04-03 10:21:18 28

原创 LeetCode 2367

给你一个下标从 0 开始、严格递增 的整数数组 nums 和一个正整数 diff。链接:https://leetcode.cn/problems/number-of-arithmetic-triplets。著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。nums[j] - nums[i] == diff 且。返回不同 算术三元组 的数目。来源:力扣(LeetCode)

2023-03-31 14:20:57 41

原创 LeetCode 1574

给你一个整数数组 arr ,请你删除一个子数组(可以为空),使得 arr 中剩下的元素是 非递减 的。三种情况: 保留左边 保留右边 左右两边都保留(从左边向右开始找两端满足情况的最接近的状态)一个子数组指的是原数组中连续的一个子序列。请你返回满足题目要求的最短子数组的长度。可以优化一下不用数组去存左右两边的元素;

2023-03-25 11:00:46 45

原创 LeetCode 1032 字符流

设计一个算法:接收一个字符流,并检查这些字符的后缀是否是字符串数组 words 中的一个字符串。例如,words = ["abc", "xyz"] 且字符流中逐个依次加入 4 个字符 'a'、'x'、'y' 和 'z' ,你所设计的算法应当可以检测到 "axyz" 的后缀 "xyz" 与 words 中的字符串 "xyz" 匹配。按下述要求实现 StreamChecker 类:StreamChecker(String[] words) :构造函数,用字符串数组 words 初始化数据结构。

2023-03-24 20:12:25 120

原创 leetcode 1630等差子数组

leetcode 1630 每日一题

2023-03-23 13:46:31 80

原创 c++面向对象new和delete的工作过程

动态分配的过程(侯捷老师面向对象笔记)

2023-03-21 17:46:56 711

原创 PTA-L2-041

【代码】PTA-L2-041。

2023-03-21 16:39:21 45

空空如也

空空如也

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

TA关注的人

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