- 博客(328)
- 收藏
- 关注

原创 LInux(四)进程控制(创建、终止、等待、替换)
进程控制分为进程创建(写时拷贝技术、fork、vfork创建子进程流程)、进程终止(程序的三种退出方式,exit与_exit的区别、退出码反映程序的退出情况)、进程等待(使用wait与waitpid接口参数使用与掌握、理解Status底层结构)、进程替换(以execve系统调用接口封装起来的其余接口的理解与使用)
2023-01-24 13:28:35
3094

原创 LInux(三)程序地址空间、内存管理
介绍程序地址空间、操作系统中三种内存管理方式(分页式内存管理、分段式内存管理、段页式内存管理)、缺页中断与内存置换算法
2023-01-19 19:47:18
1744

原创 Linux(二)进程概念
介绍冯诺依曼体系结构、操作系统控制管理计算机上的软硬件资源、进程相关信息以及fork接口的详细介绍与使用、简单模拟父子进程、僵尸进程、孤儿进程。以及对于环境变量也展开了具体的描述,对于三种获取环境变量的方式进行模拟实现
2023-01-19 00:08:54
1299
原创 dfs(二十五)22. 括号生成
代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且。使用左右俩个全局变量也可以传参数作为括号是否合法的匹配标准。
2025-03-22 12:28:04
315
原创 dfs(二十四)47. 全排列 II
使用二维数组保存所有的全排列次序,并使用set容器来去重。给定一个可包含重复数字的序列。返回所有不重复的全排列。
2025-03-20 23:36:27
250
原创 dfs(二十三)1863. 找出所有子集的异或总和再求和
[5,1,6] 的异或总和为 5 XOR 1 XOR 6 = 2。- [1,3] 的异或总和为 1 XOR 3 = 2。- [5,1] 的异或总和为 5 XOR 1 = 4。- [5,6] 的异或总和为 5 XOR 6 = 3。- [1,6] 的异或总和为 1 XOR 6 = 7。每个子集的全部异或总和值之和为 480。- [1] 的异或总和为 1。- [3] 的异或总和为 3。- [5] 的异或总和为 5。- [1] 的异或总和为 1。- [6] 的异或总和为 6。
2025-03-20 22:46:57
496
原创 dfs(二十)257. 二叉树的所有路径
因为在dfs操作的时候使用的是全局变量temp来记录每次的路径元素,使用vector可以很容易的进行push pop 操作,其实使用string temp也可以,不过会比较麻烦。访问到叶子结点时,说明path中存放了一条合理的路径,我们直接将其放入res结果即可,在函数返回的时候path中之前新插入的元素随着栈帧的返回自行进行pop,省略了我们需要进行pop这一步骤。使用dfs先将每条路径存储在一个vector中,最后再从vector转入string中。,返回所有从根节点到叶子节点的路径。
2025-03-20 15:47:25
341
原创 dfs(十九)230. 二叉搜索树中第 K 小的元素
使用一个全局变量count来进行计数,中序遍历访问到第k个就进行更新全局变量res的结果。,请你设计一个算法查找其中第。小的元素(从 1 开始计数)。给定一个二叉搜索树的根节点。
2025-03-20 11:55:35
190
原创 dfs(十八)98. 验证二叉搜索树
给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。truefalse根节点的值是 5 ,但是右子节点的值是 4。[1, 104]性质解法二叉搜索树的中序遍历为一个有序序列!
2025-03-20 11:45:35
306
原创 dfs(十七)814. 二叉树剪枝 中等
给你二叉树的根结点root,此外树的每个结点的值要么是0,要么是1。返回移除了所有不包含1的子树的原二叉树。节点node的子树为node本身加上所有node的后代。只有红色节点满足条件“所有不包含 1 的子树”。右图为返回的答案。
2025-03-20 10:43:40
359
原创 树dfs(十六)129. 求根节点到叶节点数字之和 中等!!
本来是上面这样写的, 但遇到了有左右子树不存在的情况,导致后续left和right变量的更新失败,所以使用创建一个新变量 ret 来保存左右子树的结果 并且在向下递归的时候判断一下子树是否存在。这道题在递归函数名上需要更多的一个参数,prenum,要传入当前节点之前的大小,并且每深入一层就要给pre乘上10,向下传入pre * 10 + root->val。因此,数字总和 = 495 + 491 + 40 =计算从根节点到叶节点生成的。给你一个二叉树的根节点。是指没有子节点的节点。
2025-03-18 11:24:09
220
原创 树dfs(十五)2331. 计算布尔二叉树的值
AND 与运算节点的值为 False AND True = False。OR 运算节点的值为 True OR False = True。根节点是叶子节点,且值为 false,所以我们返回 false。根节点的值为 True ,所以我们返回 true。上图展示了计算过程。
2025-03-18 11:13:50
308
原创 dfs(十四)24. 两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。函数体:先去处理⼀下第⼆个结点往后的链表,然后再把当前的两个结点交换⼀下,连接上后⾯处。递归函数的含义:交给你⼀个链表,将这个链表两两交换⼀下,然后返回交换后的头结点;递归出⼝:当前结点为空或者当前只有⼀个结点的时候,不⽤交换,直接返回。
2025-03-18 09:06:30
287
原创 dfs(十三)206. 反转链表
先使用dfs访问到最后一个元素,然后用newhead保存新的头结点,最后使用head修改当前指针的后一个指针指向实现逆序操作。链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?,请你反转链表,并返回反转后的链表。
2025-03-17 23:24:51
340
原创 dfs(十一)面试题 08.06. 汉诺塔问题
在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在比它大的盘子上。(1) 每次只能移动一个盘子;
2025-03-17 21:36:17
183
原创 拓扑排序(二)210. 课程表 II
总共有 4 门课程。要学习课程 3,你应该先完成课程 1 和课程 2。并且课程 1 和课程 2 都应该排在课程 0 之后。总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为。返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回。多了一步再每次出队列的时候给res中进行一步尾插。如果不可能完成所有课程,返回。因此,一个正确的课程顺序是。
2025-03-13 19:37:05
221
原创 拓扑排序(一)207. 课程表
总共有 2 门课程。学习课程 1 之前,你需要先完成课程 0;并且学习课程 0 之前,你还应先完成课程 1。总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。在选修某些课程之前需要一些先修课程。请你判断是否可能完成所有课程的学习?,表示如果要学习课程。
2025-03-13 19:24:09
217
原创 多源BFS(二十一)1162. 地图分析 中等
请你找出一个海洋单元格,这个海洋单元格到离它最近的陆地单元格的距离是最大的,并返回该距离。如果网格上只有陆地或者海洋,请返回。海洋单元格 (1, 1) 和所有陆地单元格之间的距离都达到最大,最大距离为 2。海洋单元格 (2, 2) 和所有陆地单元格之间的距离都达到最大,最大距离为 4。,上面的每个 单元格 都用。这两个单元格之间的距离是。你现在手里有一份大小为。
2025-03-13 12:43:36
160
原创 多源BFS(二十)1765. 地图中的最高点 中等
将所有的水域坐标加入队列中,然后利用队列进行bfs操作扩散至周围所有陆地,并更新其高度。任意安排方案中,只要最高高度为 2 且符合上述规则的,都为可行方案。找到一种安排高度的方案,使得矩阵中的最高高度值。所有安排方案中,最高可行高度为 2。蓝色格子是水域格,绿色格子是陆地格。如果有多种解法,请返回。上图展示了给各个格子安排的高度。
2025-03-13 12:08:55
325
原创 多源BFS(十九)1020. 飞地的数量 中等
解法一使用的是俩轮for循环分别进入bfs操作,也可以使用解法二多源bfs思想,将所有边界上的结点统一先放入队列中,在进行后续操作。将边界位置上的所有陆1给它全部进行bfs操作置为0,然后进行一轮计数操作即可。有三个 1 被 0 包围。一个 1 没有被包围,因为它在边界上。在任意次数的移动中离开网格边界的陆地单元格的数量。是指从一个陆地单元格走到另一个相邻(所有 1 都在边界上或可以到达边界。表示一个海洋单元格、表示一个陆地单元格。)的陆地单元格或跨过。
2025-03-13 11:20:06
342
原创 多源 BFS_多源最短路(十八)542. 01 矩阵 中等 超级源点思想
很难从1出发去找每一个最近的0,这样就只能使用单源最短路径bfs求解,最终导致复杂度过高。所以可以将所有的0作为一个超级源点,把所有的起点加入队列,剩下的就都是1,然后利用这个队列进行bfs操作,每访问一个结点,就更新它的step步数值,并放入book标记数组里。,请输出一个大小相同的矩阵,其中每一个格子是。中对应位置元素到最近的。两个相邻元素间的距离为。
2025-03-13 10:37:34
389
原创 BFS最短路径(十七)675. 为高尔夫比赛砍树 困难
1、将给定的二维数组重新处理,使用一个Node结构体来进行存储,结构体内部有树高权值、以及树的横纵坐标。每一步,你都可以向上、下、左、右四个方向之一移动一个单位,如果你站的地方有一棵树,那么你可以决定是否要砍倒它。那么此题就转化为了俩俩坐标之间的迷宫问题,只需要求出每俩坐标之间最小的步数,最后把所有的步数加起来即可。你需要按照树的高度从低向高砍掉所有的树,每砍过一颗树,该单元格的值变为。可以保证的是,没有两棵树的高度是相同的,并且你至少需要砍倒一棵树。(0,0) 位置的树,可以直接砍去,不用算步数。
2025-03-12 20:30:04
1049
原创 BFS最短路径(十六)127. 单词接龙 困难
字符串n位,每位有26种变化情况,俩个for循环嵌套,一位一位的进行修改,对修改之后的字符串,判断是否之前访问过(访问过的扔book标记里面),没访问过并且在基因库中的放入队列,并判断是否为目标字符串。一个最短转换序列是 "hit" -> "hot" -> "dot" -> "dog" -> "cog", 返回它的长度 5。endWord "cog" 不在字典中,所以无法进行转换。如果不存在这样的转换序列,返回。是一个按下述规格形成的序列。
2025-03-12 19:18:17
249
原创 BFS最短路径(十五)433. 最小基因变化
字符串八位,每位有四种变化情况,俩个for循环嵌套,一位一位的进行修改,对修改之后的字符串,判断是否之前访问过(访问过的扔book标记里面),没访问过并且在基因库中的放入队列,并判断是否为目标字符串。记录了所有有效的基因变化,只有基因库中的基因才是有效的基因序列。(变化后的基因必须位于基因库。一次基因变化就意味着这个基因序列中的一个字符发生了变化。基因序列可以表示为一条由 8 个字符组成的字符串,其中每个字符都是。如果无法完成此基因变化,返回。默认是有效的,但是它并不一定会出现在基因库中。
2025-03-12 11:38:42
253
原创 BFS最短路径(十四) 1926. 迷宫中离入口最近的出口
1、在元素入队列的时候进行判断和处理,最开始的入口坐标不作判断,只有对后续进行移动后的坐标进行判断处理。2、每层将所有一步能访问到的节点尽可能全部放入队列中,到最后第一次访问到边界条件时,进行结果的返回。总共有 3 个出口,分别位于 (1,0),(0,2) 和 (2,3)。所以,最近的出口是 (0,2) ,距离为 1 步。所以,最近的出口为 (1,2) ,距离为 2 步。迷宫中只有 1 个出口,在 (1,2) 处。初始时,你在入口与格子 (1,0) 处。一开始,你在入口格子 (1,2) 处。
2025-03-12 10:44:00
227
原创 BFS(十三)463. 岛屿的周长
在bfs函数内每次从队列中取出一个元素时,访问这个坐标的上下左右四个方向,是不是边界或者水域,如果是就res++,因为我们每次放入队列的元素都是合理的位置元素,所以这里直接在出队列的时候进行判断操作。这种访问岛屿的问题还是要记得引入book标记数组来进行处理。岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。计算这个岛屿的周长。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。它的周长是上面图片中的 16 个黄色的边。
2025-03-11 15:42:58
372
原创 BFS(十二)130. 被围绕的区域
跟之前的岛屿问题不同,如果直接从原来的方法入手,会导致bfs遇到边缘情况时无法回退,因为之前已经修改为X了,如果要继续这样做的话,需要进行俩遍bfs操作,第一步访问这片区域,保证这个区域都在被包围的范围之内。第二次在进行一遍bfs进行修改。正难则反:从四周的边缘位置出发,将所有处于边缘位置的O全部修改为另外一个字符 ' . ' ,最后在进行一次二维扫描,将不是 点 的“O”全部修改为“X”,将之前的 点 还原为 “O”。在上图中,底部的区域没有被捕获,因为它在 board 的边缘并且不能被围绕。
2025-03-11 14:53:44
411
原创 BFS(十一)695. 岛屿的最大面积
在每次进入bfs函数中加入一个count进行岛屿个数的计算,每次排查完一处岛屿,更新一下res_max变量。(代表土地) 构成的组合,这里的「相邻」要求两个。如果没有岛屿,则返回面积为。,因为岛屿只能包含水平或垂直这四个方向上的。岛屿的面积是岛上值为。
2025-03-10 23:02:29
257
原创 BFS(十)岛屿数量 中等
3、auto &[a, b] 与 auto [a, b] 加入& 后会导致在进行后续pop操作时对队列成员的修改。2、在bfs的时候,对一个新坐标进行界限访问后还要验证book数组与grid 看接下来是不是陆地,并且该陆地是否被访问过。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。1、使用表示数组book来记录当前位置是否被访问过。(水)组成的的二维网格,请你计算网格中岛屿的数量。此外,你可以假设该网格的四条边均被水包围。
2025-03-10 22:30:37
418
原创 BFS(九)733. 图像渲染
使用层序遍历bfs思想,每次访问一个位置时,再将符合条件的上下左右四个位置的坐标放入队列中,(即红色像素),在路径上所有符合条件的像素点的颜色都被更改成相同的新颜色(即蓝色像素)。初始像素已经用 0 着色,这与目标颜色相同。因此,不会对图像进行任何更改。更改为2,因为它不是在上下左右四个方向上与初始点相连的像素点。表示该图画的像素值大小。的二维整数数组表示的图画。最后返回经过上色渲染。在图像的正中间,坐标。
2025-03-10 20:45:08
235
原创 priority_queue(七)295. 数据流的中位数
/ 返回 1.5 ((1 + 2) / 2)是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。返回到目前为止所有元素的中位数。以内的答案将被接受。
2025-03-08 17:32:35
123
原创 priority_queue(六)692. 前K个高频单词 中等
"the", "is", "sunny" 和 "day" 是出现次数最多的四个单词,返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,"i" 和 "love" 为出现次数最多的两个单词,均为2次。注意,按字母顺序 "i" 在 "love" 之前。出现次数依次为 4, 3, 2 和 1 次。我们需要提取频次最高的前K个元素,那么就选择维护一个。个出现次数最多的单词。
2025-03-08 17:10:52
176
操作系统-银行家算法-银行家算法是操作系统的经典算法之一
2023-01-26
《二叉树及应用》 数据结构中二叉树使用
2023-01-26
数据结构课程设计-最短路径
2023-01-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人