自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【LeetCode|数据结构】剑指 Offer 33. 二叉搜索树的后序遍历序列

Step1. 根据 arr 的最后一个元素,将其之前的序列进行划分(左子树、右子树);如果存在不能划分的情况,返回 false。Step2. 递归判断左右子区间,直至当前区间不能再被划分。

2023-08-20 16:43:27 305

原创 【LeetCode-Medium】833. 字符串中的查找与替换

Step1. 初始化 `ans[]`。Step2. 根据 `index, source, target` 查找;如果找到,那么将 `ans[i]` 更改为 `target`,并将其后source.length()-1位设为空(被替换)。Step3. 拼接 `ans[]` 为一个字符串。

2023-08-15 21:38:07 424

原创 【LeetCode-中等】剑指 Offer 36. 二叉搜索树与双向链表

Step1. 后序遍历,寻找 root 的最左侧和最右侧节点,分别设为 head, tail。Step2. 补充寻找指定节点左子树最右侧、右子树最右侧的节点的代码。Step3. 构建 head 和 tail 之间的联系。

2023-08-09 17:29:16 308

原创 【LeetCode-中等】722. 删除注释

Step1. 先将source合并为一个字符串进行处理,中间补上’\n’,方便后续确定注释开始、结束位置。Step2. 定义数组 toDel,记录每一个注释开始、结束的位置;进行状态转移。对于 /**/ 类型的注释的结束符 */,如果匹配失败,则需要回退一位。Step3. 遍历 toDel,得到不含注释的中间结果 tmpAns。Step4. 根据 \n 来分割 tmpAns 即可。

2023-08-03 17:53:00 261

原创 【LeetCode|编译原理】剑指 Offer 20. 表示数值的字符串

Step1. 去除字符串左、右空格。Step2. 写出正规文法。Step3. 根据正规文法画出NFA。Step4. 根据NFA写代码:从左至右遍历,遇到包含ε的转移,单独处理。遍历完成后,看状态是否为终态(2、4、7),是则返回 true,否则 false。

2023-07-31 11:23:45 151

原创 【操作系统实验/Golang】实验3:进程死锁(银行家算法)

Rm,在T0时刻,进程Pi分配到的j类资源为Allocationij个,它还需要j类资源Need ij个,系统目前剩余j类资源Workj个,现采用银行家算法进行资源分配避免死锁的发生。判断T1时刻满足进程请求后系统是否安全的详细信息,最后给出是否可以满足该进程请求的结论信息。判断T0时刻是否安全的详细信息,如果安全,则输出安全的进程序列,否则提示不安全信息。如果不安全给出理由。T1时刻,发出请求的进程编号pid,以及请求的资源情况reqs;进程数量n,资源种类数m,以及各类资源的最大示例数量;

2023-01-12 18:56:08 157

原创 【操作系统实验/Golang】实验1:进程调度(FCFS, SJF, RR)

分别采用三种进程调度算法进行调度,计算每个进程的完成时间,周转时间、带权周转时间和等待时间,并且统计n个进程的平均周转时间、平均带权周转时间和平均等待时间。采用FCFS、SJF和RR算法分别模拟进程调度过程,计算每个进程的周转时间,带权周转时间和等待时间,并且计算所有进程的平均周转时间,带权平均周转时间和平均等待时间;,Tn和服务时间S1, …根据显示信息:“1-FCFS,2-SJF,3-RR”,选择0、1或者2进入对应的算法过程。要求输出计算出来的每个进程的周转时间,带权周转时间和等待时间,如:\。

2023-01-12 09:30:00 582 1

原创 【操作系统实验/Golang】实验2:进程(线程)同步

Writer线程写入数据,然后将数据放置在一个空缓冲区buffer中供Reader线程读取。Reader线程从缓冲区中获得数据,然后释放缓冲区buffer。以生产者-消费者模型为基础,在Windows环境下创建一个控制台进程,在该进程中创建读者写者线程模拟生产者和消费者。当Writer线程写入数据时,如果没有空缓冲区可用,那么Writer线程必须等待Reader线程释放出一个空缓冲区。当Reader线程读取数据时,如果没有满的缓冲区,那么读入线程将被阻塞,直到新的数据被写进去。N:缓冲区大小(取16)

2023-01-11 09:15:00 298

原创 【操作系统系统/Golang】实验5:磁盘调度(FCFS,SSTF,SCAN与循环SCAN)

假设有trackNum个磁道号所组成的磁道访问序列,给定开始磁道号initTrackNum和磁头移动的方向direction(正向或者反向),分别利用不同的磁盘调度算法访问磁道序列,给出每一次访问的磁头移动距离,计算每种算法的平均寻道长度。输入:磁道个数n和磁道访问序列,开始磁道号initTrackNum和磁头移动方向direction(对SCAN和C-SCAN算法有效)。先来先服务FCFS,最短寻道时间优先SSTF,SCAN和循环SCAN算法(对应其他参考书的LOOK和C-LOOK)

2023-01-10 09:00:00 611

原创 【操作系统实验/Golang】实验4:虚拟内存页面置换算法

假设内存中分配给每个进程的最小物理块数为m,在进程运行过程中要访问的页面个数为n,页面访问序列为P_1,P_2,…,P_n,分别利用不同的页面置换算法调度进程的页面访问序列,给出页面访问序列的置换过程,计算每种算法缺页次数和缺页率。b) 每种算法的缺页次数lackNum和缺页率pageFaultRate。

2023-01-09 14:54:41 265

原创 【LeetCode-中等】623. 在二叉树中增加一行(C++实现)

根据题目的第4个规则,当depth==1时,将新建的节点设为根节点,原来的根节点设为左孩子。层序遍历获取depth-1行的节点进行处理。随后,进行层序遍历,进行至depth-1行。

2022-08-05 10:43:49 231

原创 【LeetCode-中等】592. 分数加减运算(C++实现)

每一步的计算分为4个部分计算最小公倍数、通分、计算、约分。,说明正在遍历第一个分数,此时将其设为0。字符串按照‘/’分割即可。来判定,之后返回结果即可。,都将前面的字符串转换为。将前面的字符串转换为。计算,格式化字符串。.........

2022-07-27 09:00:00 189

原创 【LeetCode-中等】919. 完全二叉树插入器(C++实现)

假设下标从1开始)在这个完全二叉树中,下标为。根据完全二叉树的特性,可以用数组来辅助存储二叉树。新建节点,插入数组后和父节点建立联系即可。如果当前数组大小

2022-07-25 21:20:16 372

原创 【LeetCode-中等】814. 二叉树剪枝(C++实现)

遍历中,可以传递三个参数当前节点、父亲节点、代表当前节点是父亲节点的左孩子还是右孩子(假设左孩子为0,右孩子为1)。对于判断当前子树是否包含1的函数。②当前节点的左子树中包含1。③当前节点的右子树中包含1。对题目给定的树进行遍历。①当前节点的值为1。......

2022-07-21 21:33:14 429

原创 1.3.2 自然数拆分问题(C++实现)

任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。现在给你一个自然数n,要求你求出n的拆分成一些数字的和。每个拆分后的序列中的数字从小到大排序。然后你需要输出这些序列,其中字典序小的序列需要优先输出。递归前的处理,将n(表示还剩下多少值没有用)减去当前的i值即可。填写代码中的三个objective即可。题目的意思是,输出的加法式子中必须含有。所以判断条件就是如果。就直接返回,不输出。第一行为一个整数n。......

2022-07-15 09:00:00 818

原创 1.3.1 全排列问题(C++实现)

输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。由1至n组成的所有不重复的数字序列,每行一个序列。数组后,从1开始dfs(dfs的形参。数组和用来判断数字是否遍历过的。首先,设置暂时存放值的。每个数字之间由空格隔开。...

2022-07-14 20:51:07 865

原创 【计算机网络】第三章 数据链路层的共同问题、点对点协议PPP

数据链路 data link:实现必要的通信协议(数据链路层的通信协议曾称为通信规程)的硬件和软件 + 物理链路。即数据链路分为 物理链路 和 逻辑链路。帧 frame:点对点信道的数据链路层协议数据单元。(网络层的协议数据单元:IP数据报,简称为数据报、分组、包。)点对点信道在数据链路层通信时的主要步骤:三个共同的基本问题封装成帧 framing含义:在一段数据的前后分别添加首部和尾部。相关概念:帧长:帧的数据部分长度 + 帧首部和尾部的长度。最大传送单元 MTU (Maximum Transfer Un

2022-07-13 12:00:00 226

原创 【计算机网络】第二章 物理层整理

物理层的协议常称为物理层规程(procedure)物理层的主要任务:物理层还要完成传输方式的转换。(串行传输,逐bit按照时间顺序传输)一个数据通信系统可划分为三大部分:常用术语根据通信双方的信息交互方式,可分为三种基本方式:基带信号:来自信源(source)的信号。含有较多低频分量、甚至直流分量,需要经过调制。调制(modulation)基带调制(常称为编码coding):仅对基带信号的波形进行变换,使其与信道特性相适应。带通调制:使用载波(carrier)进行调制,将基带信号的频率范围搬移到较高频段,并

2022-07-12 23:22:02 460

原创 【OpenGL】计算机图形学实验六: 综合实验(Bresenham算法绘制直线和圆;纹理和光照的应用)

(Bresenham算法绘制直线和圆;纹理和光照的应用)1、实验目的和要求2、实验设备PC机、CodeBlocks\VS系列\OpenGL安装包3、实验内容及原理 题目1: 选择实验目的和要求中的2个以上要求。Bresenham法绘制直线、圆,完成一副图形。实现OpenGL中光照和纹理的应用。实验原理(基本知识):1. OpenGL纹理。1) 定义以下三个函数分别指定一维、二维和三维的纹理:void glTexImage1D(GLenum target,GLint level, GLint

2022-07-11 09:00:00 2332

原创 【OpenGL】计算机图形学实验五: 图形变换实验(二维、三维图形的变换)

(二维、三维图形的变换)1、实验目的和要求理解二维、三维图形变换的数学原理原理,并能利用OpenGL绘制简单的二维、三维图形,调用OpenGL命令实现基本的图形变换。2、实验设备PC机、CodeBlocks\VS系列\OpenGL安装包3、实验内容及原理 实验原理(基本知识)1) 键盘回调函数:glutKeyboardFunc(void(*func)(unsigned char key, int x, int y));key表示键盘上按下的键,如’w’, ‘a’, ‘s’, ‘d’等。2)

2022-07-10 09:00:00 5328

原创 【OpenGL】计算机图形学实验四: 直线、多边形裁剪实验(直线和多边形的裁剪)

(直线和多边形的裁剪)1、实验目的和要求实验目的:实验内容:2、实验设备PC机、CodeBlocks\VS系列\OpenGL安装包3、实验内容及原理 实验原理(基本知识)1) Cohen-Sutherland裁剪算法又称编码裁剪算法,对每条直线段分三种情况处理:① 如果点P1, P2完全在裁剪窗口内,则该直线段完全可见,“简取”之;② 如果点P1, P2都在窗口外,且在窗口的同一外侧,则该直线段完全不可见,“简弃”之;③ 若不满足“简取”和“简弃”的条件,则直线段可能与窗口相交

2022-07-09 09:00:00 5865

原创 【OpenGL】计算机图形学实验三: 区域填充算法实验(区域填充算法)

(区域填充算法)1、实验目的和要求熟悉并掌握多边形区域用顺序扫描和种子填充算法原理,并利用数据结构和程序设计知识加以实现。2、实验设备PC机、CodeBlocks\VS系列\OpenGL安装包3、实验内容及原理 根据自己的兴趣选择1-2个作为本次实验的研究内容实验原理(基本知识)边标志填充算法:先用一种特殊的颜色在帧缓冲存储器中将多边形的边界(水平边部分的边界除外)勾画出来,然后将着色的像素点依x坐标递增的顺序两两配对,再将每对像素构成的扫描线区间内所有像素置为填充色。4、实验源程序代码、运行结果4.1边标

2022-07-08 09:00:00 4250

原创 【OpenGL】计算机图形学实验二:基本图形的生成技术(直线、圆、椭圆生成算法)

(直线、圆、椭圆生成算法)1、实验目的和要求熟悉并掌握基本图形,特别是直线、圆和椭圆的基本生成算法,并能够用C++上机实现。2、实验设备PC机、CodeBlocks\VS系列\OpenGL安装包3、实验内容及原理 分别用中点法、数值微分法、Bresenham法绘制任意直线,用Bresenham绘制圆,用中点法绘制椭圆(选做),并比较各种算法的差别。实验原理(基本知识)DDA数值微分算法:由于直线的一阶导数是连续的,且和是成比例的,因此可以通过在当前位置分别加上两个小增量和(是无穷小的正数)来求出下一点的x,

2022-07-07 09:00:00 5852 1

原创 【OpenGL】计算机图形学实验一:OpenGL基础实验(实验环境的熟悉、简单图形的绘制和输出)

(实验环境的熟悉、简单图形的绘制和输出)1、实验目的和要求学习基本的OpenGL图形绘制和输出函数,掌握使用基于C++ OpenGL开发图形程序的流程。2、实验设备PC机、CodeBlocks\VS系列\OpenGL安装包3、实验内容及原理 搭建VS\CODEBLOCK开发环境中利用OpenGL开发图形学程序的程序框架。实验1: 习题5-27实验2: 习题5-28实验3: 习题5-29实验4: 习题5-30 实验原理(基本知识)4、实验源程序代码、运行结果4.1习题5.27 绘制实线、虚线和点划线4.1.

2022-07-06 09:00:00 5325

原创 【数据库系统原理】第五章 代数和逻辑查询语言:包、扩展操作符、关系逻辑、关系代数与Datalog

定义:即多集, Multiset。同一个元组可以在关系中多次出现。使用包的优点:包上的运算都允许运算之前和运算之后元组重复。注意事项:集合上的包操作如果对两个集合 R、S 进行基于包的交和差操作,其结果与集合方式运算一样。因为作为被处理对象的两个关系本身没有重复的元组,所以交或差之后结果中仍然没有重复元组但对两个集合 R 和 S,进行基于包的并操作,其操作结果可能不再是集合。关于包的的代数定律包上的关系操作:包的并、交、差设R和S是包,若元组t在R和S中分别出现m次和n次(这里的m和n可以是0),则:包的

2022-07-05 13:27:38 1402 2

原创 【LeetCode-中等】513. 找树左下角的值(C++实现)

513. 找树左下角的值层序遍历进行每一层的遍历时,保存第一个值()即可。

2022-07-05 09:00:00 73

原创 【LeetCode-中等】532. 数组中的 k-diff 数对(C++实现)

532. 数组中的 k-diff 数对预排序 + 二分查找首先,对数组进行预排序。设置一个set来保存数值对。之后,遍历整个数组。每一次遍历,在区间 中,查找 ,如果找到,就把数值对 加入集合。

2022-07-04 09:00:00 130

原创 【LeetCode-中等】515. 在每个树行中找最大值(C++实现)

​515. 在每个树行中找最大值 - 力扣(LeetCode)使用层序遍历,记录每一行的最大值即可。实现代码(C++)​

2022-07-03 09:26:54 203

原创 【LeetCode-中等】450. 删除二叉搜索树中的节点(C++实现)

450. 删除二叉搜索树中的节点根据二叉查找树的特点(左孩子比当前节点小,右孩子比当前节点大,以当前节点为根节点的二叉树也是二叉查找树),可以分为下面三种情况讨论:当前节点小于 key继续在左子树中寻找当前节点大于 key继续在右子树中查找当前节点等于 key根据题目的意思,会有多种答案,我使用下边的方法:如果当前节点①既有左孩子,又有右孩子,那么将parent设为目标节点的右孩子,并将目标节点的左子树放在目标节点右子树的最左边(根据二叉查找树的定义,左边的节点小于右边,所以需要放到目标节点右子树的

2022-07-02 06:47:39 292

原创 【LeetCode-中等】剑指 Offer 47. 礼物的最大价值(C++实现)

文章目录题目链接解题思路实现代码(C++)题目链接剑指 Offer 47. 礼物的最大价值解题思路动态规划。初始值:f[0][0]=grid[0][0]f[0][0] = grid[0][0]f[0][0]=grid[0][0]对于第一行和第一列单独考虑:// 1st col && rowfor (int i = 1; i < grid[0].size(); i++) { f[0][i] = grid[0][i] + f[0][i - 1];}for (i

2022-05-10 09:27:08 322

原创 【LeetCode-中等】剑指 Offer 26. 树的子结构(C++实现)

题目链接剑指 Offer 26. 树的子结构实现思路对 A 进行 DFS,沿途进行判断 B 是否是 A 的子结构。如果 A 为空或者 B 为空,根据题目的意思,返回 false。否则,对 A 进行 DFS。if (A == NULL) { return false;}bool ans = isSubTree(A, B);if (ans) { return true;} // ans == falsereturn traversal(A->left, B)

2022-05-09 09:11:41 214

原创 【LeetCode-中等】剑指 Offer 32 - III. 从上到下打印二叉树 III(C++实现)

题目链接剑指 Offer 32 - III. 从上到下打印二叉树 III实现思路这道题和实现二叉树层序(题目链接:102. 二叉树的层序遍历)基本一样,只是多了奇偶层数判断。每一次循环的开始,队列的大小就是当前层数的所有节点个数(按照从左到右的顺序);依次把当前节点的左右孩子入队:if (temp->left) { q.push(temp->left);}if (temp->right) { q.push(temp->right);}使用一个 flag 标

2022-05-09 08:26:45 372

原创 【数据库系统原理】第四章 高级数据库模型:统一建模语言UML、对象定义语言ODL

文章目录4.7&4.8 统一建模语言 UMLUML 和 E/R 图的对应关系UML 类 及其 键关联自关联关联类子类聚集和组合UML 图到关系的转化类 -> 关系关联 -> 关系UML 子类 -> 关系聚集 / 组合 -> 关系弱类和支持组合 -> 关系4.9&4.10 对象定义语言 ODLODL 简介类声明属性联系反向联系联系的多重性ODL 中的数据类型ODL 中的子类ODL 中键的声明ODL -> 关系ODL 类 -> 关系ODL 联系 -&gt

2022-04-24 20:02:46 1021 2

原创 【数据库系统原理】第四章 高级数据库模型:弱实体集、E/R 联系到关系的转化、子类结构到关系的转化

文章目录4.4 弱实体集定义弱实体集的来源弱实体集的要求弱实体集的符号弱实体集的设计4.5 从 E/R 图到关系设计E/R 联系到关系的转化两个基本规则 和 特殊处理实体集 -> 关系非弱实体集 -> 关系弱实体集 -> 关系关系组合4.6 子类结构到关系的转化三种转化策略1. E/R 方式转化2. 面向对象方法3. 空值组合关系三种转化策略的比较特殊查询方式下的比较4.4 弱实体集定义实体集 E 的所有属性集均不能独立成键,即键中必须包含另一实体集 F 的键,则E是弱实体集。

2022-04-15 23:23:30 5230

原创 【LeetCode-简单】112. 路径总和 && 257. 二叉树的所有路径(C++实现)

文章目录112. 路径总和题目链接解题思路实现代码(C++)257. 二叉树的所有路径题目链接解题思路实现代码(C++)112. 路径总和题目链接112. 路径总和解题思路递归处理对每一条路径进行判断。当遍历到叶子结点(root->left == nullptr && root->right == nullptr)时,如果该条路径的和等于给定值,则返回 true,否则返回 false。相似题目:257. 二叉树的所有路径实现代码(C++)class Solut

2022-04-10 18:21:29 1131

原创 【LeetCode-简单】1413. 逐步求和得到正数的最小值(C++实现)

文章目录题目链接解题思路实现代码(C++)题目链接1413. 逐步求和得到正数的最小值解题思路题目的意思是从 startValue 开始依次加上 nums[i],过程中不能有小于 1 的值出现。所以可以先创建一个用于记录前 i 项之和的数组容器 f。其中,f[i] == f[i - 1] + nums[i], i = 0, 1, 2, ..., size - 1 (相当于 startValue == 0)。并记录其中出现过的前 i 项的最小和。vector<int> f(size);

2022-04-09 17:19:50 965

原创 【LeetCode-简单】101. 对称二叉树(C++实现)

文章目录题目链接实现思路实现代码(C++)题目链接101. 对称二叉树实现思路递归处理递归时,判断左子树和右子树的情况。若都不为空,则对它们的值进行判断。不相等则必定不对称,返回 false。两者相等,则继续对它们的左子树和右子树进行递归处理。if (left != nullptr && right != nullptr) { if (left->val != right->val) { return false; } //

2022-04-09 09:28:02 370

原创 【数据库系统原理】第四章 高级数据库模型:E/R模型及其设计规则、约束

文章目录第四章 数据库建模4.1 E/R 模型E-R 模型中的主要元素及其概念联系的种类多路联系联系中的角色 role联系的属性多路联系到二元联系的转换 P79E-R 图中的子类 subclass4.2 E-R 模型的设计规则4.3 E-R 模型中的约束常见的约束E-R 模型中的键第四章 数据库建模4.1 E/R 模型E-R 模型中的主要元素及其概念实体 Entity:客观存在并可相互区别的事物。可以是具体的人、事、物或抽象的概念。实体集 Entity Set(矩形):相似实体的集合。属性 A

2022-04-08 17:10:19 2464

原创 【LeetCode-中等】429. N 叉树的层序遍历(C++实现)

文章目录题目链接解题思路实现代码(C++)题目链接429. N 叉树的层序遍历解题思路队列实现题目要求的返回类型为 vector<vector<int>> ,可以用 map 来记录深度。如果 root 为空,则直接返回;否则,将队列的节点设置为 pair<Node*,int>(节点和它的深度)。然后按照 BFS 的过程即可。实现代码(C++)class Solution {public: vector<vector<int&g

2022-04-08 09:40:14 882

原创 【LeetCode-简单】100.相同的树(C++实现)

文章目录题目链接实现思路实现代码(C++)题目链接100. 相同的树实现思路递归首先判断 p 和 q 的情况(看他们是否为空)。如果都为空,则返回 true。若只有一个为空,则两棵树不相同,返回 false。if (p == nullptr && q == nullptr) { // 都为空 return true;} // p != nullptr || q != nullptrif (p == nullptr || q == nullptr) { // 只有一个

2022-04-07 16:36:17 153

空空如也

空空如也

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

TA关注的人

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