- 博客(84)
- 收藏
- 关注
原创 Linux下目录递归拷贝的单进程实现
利用POSIX API在Linux系统上编写应用程序,仿写cp命令的部分功能,将源文件/目录复制到另外一个文件或复制到另外一个目录。
2025-06-01 21:00:37
632
原创 Linux下哲学家进餐问题的多线程实现与解决
利用POSIX API在Linux系统上编写应用程序,通过多线程和互斥量机制实现哲学家进餐问题(哲学家的数量可以通过简单的配置进行修改)在实现基本功能的基础上,尝试采用多种思路来预防死锁,包括并不限于以下思路。
2025-05-23 16:59:54
406
原创 Linux下生产者消费者问题的多进程实现
define SEMKEY 123 // 信号量集的键值#define SHMKEY 456 // 共享内存的键值#define BUFNUM 10 // 缓冲区大小(元素数量)#define SEMNUM 3 // 信号量数量系统资源的键值(SEMKEY/SHMKEY):用于标识和获取信号量和共享内存缓冲区大小(BUFNUM):循环缓冲区可以存储的元素数量信号量数量(SEMNUM):将创建3个信号量defined(_SEM_SEMUN_UNDEFINED)//GNU标准库#else。
2025-05-23 11:59:19
743
原创 Linux内核源码阅读——虚拟内存
不同的虚拟区间其处理操作可能不同,Linux 在这里利用了面向对象的思想,即把一个虚拟区间看成一个对象,用 vm_area_struct 描述了这个对象的属性,其中的 vm_operations_struct 结构描述了在这个对象上的操作,其定义在include/linux/mm.h。之所以这样分割,是因为每个虚拟区间可能来源不同,有的可能来自可执行映像,有的可能来自共享库,而有的则可能是动态分配的内存区,所以对每一个由vm_area_struct 结构所描述的区间的处理操作和它前后范围的处理操作不同。
2025-05-12 06:48:20
892
原创 动态规划10——路径问题——地下城游戏
任何房间都可能对骑士的健康点数造成威胁,也可能增加骑士的健康点数,包括骑士进入的左上角房间以及公主被监禁的右下角房间。如果骑士遵循最佳路径:右 -> 右 -> 下 -> 下 ,则骑士的初始健康点数至少为 7。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为。的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。个房间组成的二维网格。),要么包含增加骑士健康点数的魔法球(若房间里的值为。
2025-04-11 02:44:37
270
原创 动态规划9——路径问题——最小路径和
给定一个包含非负整数的m x n网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。每次只能向下或者向右移动一步。7因为路径 1→3→1→1→1 的总和最小。12。
2025-04-10 23:22:14
148
原创 动态规划8——路径问题——下降路径最小和
给你一个n x n的整数数组matrix,请你找出并返回通过matrix的的。可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置(row, col)的下一个元素应当是或者。13如图所示,为和最小的两条下降路径-59如图所示,为和最小的下降路径。
2025-04-06 22:44:28
131
原创 动态规划7——路径问题——礼物的最大价值
来源:牛客网在一个m×nm\times nm×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?如输入这样的一个二维数组,[1,3,1],[1,5,1],[4,2,1]那么路径 1→3→5→2→1 可以拿到最多价值的礼物,价值为12示例1。
2025-04-06 21:46:50
219
原创 动态规划6——路径问题——不同路径II
给定一个m x n的整数数组grid。一个机器人初始位于(即grid[0][0]机器人尝试移动到(即机器人每次只能向下或者向右移动一步。网格中的障碍物和空位置分别用1和0来表示。机器人的移动路径中不能包含有障碍物的方格。返回机器人能够到达右下角的不同路径数量。测试用例保证答案小于等于2 * 109。23x3 网格的正中间有一个障碍物。从左上角到右下角一共有2条不同的路径:1. 向右 -> 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右 -> 向右101。
2025-04-06 20:37:05
311
原创 动态规划5——路径问题——不同路径
一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?283从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右3. 向下 -> 向右 -> 向下282 * 109。
2025-04-06 16:06:39
169
原创 动态规划4——斐波那契数列模型——解码方法
一条包含字母A-Z的消息通过以下映射进行了然而,在已编码的消息时,你意识到有许多不同的方式来解码,因为有些编码被包含在其它编码当中("2"和"5"与"25"例如,"11106""AAJF""06"注意,可能存在无法解码的字符串。给你一个只含数字的字符串s,请计算并返回方法的。如果没有合法的方式解码整个字符串,返回0。题目数据保证答案肯定是一个的整数。s = "12"2它可以解码为 "AB"(1 2)或者 "L"(12)。s = "226"3。
2025-04-06 14:59:38
324
原创 动态规划3——斐波那契数列模型——最小花费爬楼梯
给你一个整数数组cost,其中cost[i]是从楼梯第i个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为0或下标为1的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。,20]15你将从下标为 1 的台阶开始。- 支付 15 ,向上爬两个台阶,到达楼梯顶部。总花费为 15。cost = [,100,,1,,100,,100,6你将从下标为 0 的台阶开始。- 支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。
2025-04-06 13:57:35
317
原创 动态规划2——斐波那契数列模型——三步问题
三步问题。有个小孩正在上楼梯,楼梯有 n 阶台阶,小孩一次可以上 1 阶、2 阶或 3 阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模 1000000007。:n = 3:4有四种走法:n = 5:13。
2025-04-05 17:04:01
186
原创 动态规划1——斐波那契数列模型——第 N 个泰波那契数
泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数n,请返回第 n 个泰波那契数 Tn 的值。
2025-04-05 16:30:57
207
原创 算法入门17——二分查找算法——二分查找
给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。numstarget= 949 出现在nums中并且下标为 4numstarget= 2-12 不存在nums中因此返回 -1numsn[1, 10000]nums。
2025-04-02 12:08:45
229
原创 算法入门16——滑动窗口——最小覆盖子串
给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串""。tts"BANC"最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。"a"整个字符串 s 是最小覆盖子串。""t 中两个字符 'a' 均应包含在 s 的子串中,因此没有符合条件的子字符串,返回空字符串。t。
2025-04-02 09:47:42
140
原创 算法入门15——滑动窗口——串联所有单词的子串
给定一个字符串s和一个字符串数组wordswords中所有字符串。s中的是指一个包含words中所有字符串以任意顺序排列连接起来的子串。"abcdef""abefcd""cdabef""cdefab""efabcd""efcdab""acdbef"words返回所有串联子串在s中的开始索引。你可以以返回答案。2.[0,9]因为 words.length == 2 同时 words[i].length == 3,连接的子字符串的长度必须为 6。子串 "barfoo" 开始位置是 0。
2025-04-01 23:26:14
636
原创 算法入门14——滑动窗口——找到字符串中所有字母异位词
给定两个字符串s和p,找到s中所有p的的子串,返回这些子串的起始索引。不考虑答案输出的顺序。[0,6]起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。[0,1,2]起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。p。
2025-04-01 21:39:30
283
原创 算法入门13——滑动窗口——水果成篮
你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组fruits表示,其中fruits[i]是第i棵树上的水果。你想要尽可能多地收集水果。给你一个整数数组fruits,返回你可以收集的水果的数目。fruits = [3可以采摘全部 3 棵树。3可以采摘 [1,2,2] 这三棵树。如果从第一棵树开始采摘,则只能采摘 [0,1] 这两棵树。4可以采摘 [2,3,2,2] 这四棵树。如果从第一棵树开始采摘,则只能采摘 [1,2] 这两棵树。,3,3,4]5。
2025-04-01 17:43:58
251
原创 算法入门12——滑动窗口——将x减到0的最小操作数
给你一个整数数组nums和一个整数x。每一次操作时,你应当移除数组nums最左边或最右边的元素,然后从x中减去该元素的值。请注意,需要数组以供接下来的操作使用。如果可以将x减到0,返回;否则,返回-1。2最佳解决方案是移除后两个元素,将 x 减到 0。-15最佳解决方案是移除后三个元素和前两个元素(总共 5 次操作),将 x 减到 0。
2025-04-01 02:26:21
142
原创 算法入门11——滑动窗口——最大连续1的个数
给定一个二进制数组nums和一个整数k,假设最多可以翻转k个0,则返回执行操作后数组中连续1的最大个数。6,1,1,1,1,粗体数字从 0 翻转到 1,最长的子数组长度为 6。10[0,0,1,1,,1,1,1,粗体数字从 0 翻转到 1,最长的子数组长度为 10。0。
2025-03-31 22:09:42
329
原创 算法入门10——滑动窗口——无重复字符的最长子串
给定一个字符串s,请你找出其中不含有重复字符的的长度。3因为无重复字符的最长子串是"abc"所以其长度为 3。1因为无重复字符的最长子串是"b"所以其长度为 1。3因为无重复字符的最长子串是"wke"所以其长度为 3。请注意,你的答案必须是的长度,"pwke"是一个子序列,不是子串。
2025-03-31 21:16:08
152
原创 算法入门9——滑动窗口——长度最小的子数组
给定一个含有n个正整数的数组和一个正整数target找出该数组中满足其总和大于等于target的长度最小的,并返回其长度如果不存在符合条件的子数组,返回0。2子数组[4,3]是该条件下的长度最小的子数组。10。
2025-03-31 20:17:57
121
原创 算法入门8——双指针——四数之和
给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且的四元组bcd你可以按返回答案。
2025-03-31 18:20:59
254
原创 算法入门7——双指针——三数之和
给你一个整数数组nums,判断是否存在三元组满足i!= ji!= k且j!= k,同时还满足。请你返回所有和为0且不重复的三元组。答案中不可以包含重复的三元组。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。[]唯一可能的三元组和不为 0。[[0,0,0]]唯一可能的三元组和为 0。
2025-03-31 12:16:42
200
原创 算法入门6——双指针——和为s的两个数
1.题目来源:牛客网输入一个升序数组 array 和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,返回任意一组即可,如果无法找出这样的数字,返回一个空数组即可。数据范围: 0≤len(array)≤105 0 \le len(array) \le 10^5 \ 0≤len(array)≤105 , 1≤array[i]≤106 1 \le array[i] \le 10^6 \ 1≤array[i]≤106示例1。
2025-03-31 11:24:34
247
原创 算法入门5——双指针——有效三角形的个数
给定一个包含非负整数的数组nums,返回其中可以组成三角形三条边的三元组个数。3有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,34。
2025-03-31 02:23:44
375
原创 算法入门4——双指针——盛最多水的容器
给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i, 0)和。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。你不能倾斜容器。49图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。1。
2025-03-31 01:59:04
216
原创 Linux系统中用Shell脚本训练(WSL)
创建一个 monitor_cpu.sh 文件在文本编辑器中,输入按住“ctrl + x”退出编辑器,然后 yes 后 enter 保存一下。然后赋予脚本运行权限最后运行脚本如果你不想运行了,记得“ctrl + c”终止终端。
2025-03-07 10:30:01
261
原创 C++——类和对象(下)
注意:初始化列表中按照成员变量在类中声明顺序进行初始化,跟成员在初始化列表出现的先后顺序无关。建议声明顺序和初始化列表顺序保持一致。
2025-01-31 16:39:18
961
原创 C++——类和对象(中)
说明:C++把类型分成内置类型(基本类型)和自定义类型。内置类型就是语言提供的原生数据类型,如:int/char/double/指针等,自定义类型就是我们使用class/struct等关键字自己定义的类型。
2025-01-18 21:37:32
864
原创 C++——类和对象(上)
因为p是一个指针,p->Print()相当于把p指针作为this参数传递进去。也就会存在:nullptr->_a的情况,这自然是错误的。第一题选C,第二题选B。类定义了一个新的作用域,类的所有成员都在类的作用域中,在类体外定义成员时,需要用 ::作用域操作符指明成员属于哪个类域。A、编译错误 B、运行崩溃 C、正常运行。A、编译错误 B、运行崩溃 C、正常运行。
2024-11-20 20:49:50
528
原创 C++——基础知识
定义命名空间,需要使用到namespace关键字,后面根命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量、函数、类型等。namespace本质是定义出一个域,这个域跟全局域各自独立,不同的域可以定义同名变量。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找一个变量、函数、类型出处的逻辑,所以有了域隔离,名字冲突就解决了。局部域和全局域除了会影响编译查找逻辑,还会影响变量的生命周期,命名空间域和类域不影响变量生命周期。
2024-10-31 14:42:18
1001
15
原创 算法—八大常用排序算法(下)
基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。时间复杂度:O(n²)提高算法效率:寻找最大值和最小值,同时操作。时间复杂度:O(n²)
2024-10-27 14:29:36
622
15
C++后端开发书籍推荐
2024-04-13
C++后端学习的技术栈
2024-04-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人