自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构 最短路径课设(源码+实验报告+视频讲解)(用了自取)

关于数据结构最短路径问题实验报告+代码+视频(用了自取)

2023-01-23 20:18:50 3078

原创 课程设计、二叉树实现及应用(附上源码和实验报告,用了自取)

结课课设对二叉树的应用实现项目

2023-01-03 20:58:45 861

原创 课设 银行家算法 源码+实验报告(用了自取)

银行家算法400行代码,用自取,逻辑清晰、思路完整、代码布局合理,复制粘贴即可使用

2023-01-02 10:49:15 7373 2

原创 C++——智能指针 weak_ptr

weak_ptr配合shared_ptr解决循环引用问题

2025-06-04 23:52:10 549 2

原创 C++——智能指针 shared_ptr

引用计数、资源共享

2025-06-04 18:42:31 350 1

原创 C++——智能指针 unique_ptr

禁止拷贝,无法共享!

2025-06-04 17:03:30 443

原创 C++——智能指针 auto_ptr

智能管理、权限转移。释放时会造成野指针的问题。

2025-06-03 11:17:55 227

原创 C++——异常

看下面这个代码,首先main函数中try f3,进入f3主体内部,f3中又调用f2,又进入f2中,f2中又调用f1,进入f1中,然后再f1中触发越界访问,跳出f1,返回到f2中看是否有catch接收,又退回到f3中看是否有catch接收,最终在main中发现有catch接收out_of_range异常。如果有一个块抛出一个异常,捕获异常的方法会使用 try 和 catch 关键字。catch: 在您想要处理问题的地方,通过异常处理程序捕获异常.catch 关键字用于捕获异常,可以有多个catch进行捕获。

2025-05-27 22:01:26 630

原创 Spring_Boot(一)Hello spring boot!

再main方法中调用 SpringApplication.run(HelloApplication.class,args);通过HelloController控制器调用@RequestMapping来进行http请求。新建项目加入 spring_web 依赖,生成如下 pom.xml文件,即为代码配置。RequestMapping方法需要在主函数中进行run调用,才可以执行。方法就可以直接在main函数中打印 hello world。再main方法中直接使用。

2025-05-19 23:35:00 277

原创 Java(基础)day02 输入、输出、数组、重载、递归

(5) (C++11起)std::string to_string(long double value);

2025-05-19 11:22:19 1041

原创 Java(基础) day01 初识Java

不同于 C 或 C++,Java 是一种强类型静态语言,并且它的基本数据类型具有固定的尺寸,不受底层操作系统的干扰。因此,在 Java 中,无论是在何种平台上执行,通常情况下,在现代 32 位或 64 位系统上,,此时JVM会将字节码转换成平台能够理解的形式来运行。是由字节码组成的平台无关、面向JVM的文件。Java中的int不管在什么环境下都是四个字节。float 类型在 Java 中占四个字节。double在任何系统下都占8个字节。short在任何系统下都占2个字节。long在任何环境下都是八个字节。

2025-05-16 16:01:51 391

原创 C++——哈希表

另外,最初的错误想法是让新桶直接将旧桶中的vector进行一次拷贝,把每个链表的第一个节点指针拷入就行,最后发现肯定不能这样,因为后续对桶进行扩容,取模的值也会发生改变,所以旧桶中的元素在新的模值下就会映射到新的结点中。开散列法又叫链地址法(开链法),首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。设有n个d位数,每一位可能有r种不同的符号,这r种不同的符号在各位上出现的频率不一定。

2025-04-28 17:50:39 882

原创 c++ unordered_map和map的区别

unordered中文翻译即 “无序的” ,自然地,unordered_map也就是不排序的map的意思。unordered_set与set和unordered_map与map是可以类比的,它们的区别大致是一样的。unordered_map在c++11加入的标准模板库,c++11以前是无法使用unordered_map、unordered_set、auto、stoi等标准模板的。unordered_map包含在unordered_map头文件中,即如果想要使用时,引入下面代码即可。

2025-04-24 11:01:41 255

原创 哈希(九)350. 两个数组的交集 II

请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。定义俩个map字典来进行计数操作,遍历dict1,在dict2中找到和它重复出现的交集元素,并捕获他们之间的较小值count,将该交集元素插入k次放入结果数组中。

2025-04-23 15:45:11 257

原创 哈希(八)349. 两个数组的交集 用unordered_set 替换 set

使用了set进行去重,然后利用俩个迭代器遍历俩个set,寻找重复的元素。也可以利用find接口来进行俩个set的求交集操作。输出结果中的每个元素一定是。[4,9] 也是可通过的。

2025-04-23 11:45:47 161

原创 哈希(七)961. 在长度 2N 的数组中找出重复 N 次的元素 简单

【代码】哈希(七)961. 在长度 2N 的数组中找出重复 N 次的元素 简单。

2025-04-23 11:34:46 176

原创 加法模拟 66. 加一

你可以假设除了整数 0 之外,这个整数不会以零开头。最高位数字存放在数组的首位, 数组中每个元素只存储。数组所表示的非负整数,在该数的基础上加一。加 1 得到了 9 + 1 = 10。因此,结果应该是 [1,0]。输入数组表示数字 4321。输入数组表示数字 123。输入数组表示数字 9。

2025-04-19 11:07:32 161

原创 1037. 有效的回旋镖 判断三点共线

定义为一组三个点,这些点。

2025-04-19 10:52:30 220

原创 哈希(六)原地哈希 442. 数组中重复的数据 中等

利用元素范围为1-n这样一个数据范围来暗示原地哈希的使用

2025-04-11 10:30:42 170

原创 dfs(二十六)77. 组合

【代码】dfs(二十六)77. 组合。

2025-03-22 15:23:45 184

原创 dfs(二十五)22. 括号生成

代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且。使用左右俩个全局变量也可以传参数作为括号是否合法的匹配标准。

2025-03-22 12:28:04 336

原创 dfs(二十四)47. 全排列 II

使用二维数组保存所有的全排列次序,并使用set容器来去重。给定一个可包含重复数字的序列。返回所有不重复的全排列。

2025-03-20 23:36:27 262

原创 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 515

原创 dfs(二十二)78. 子集

传一个下标作为参数,这样在函数进行递归的时候就可以进行去重操作。返回该数组所有可能的。

2025-03-20 22:10:16 600

原创 dfs(二十一)46. 全排列 中等

给定一个不含重复数字的数组。

2025-03-20 16:32:50 291

原创 dfs(二十)257. 二叉树的所有路径

因为在dfs操作的时候使用的是全局变量temp来记录每次的路径元素,使用vector可以很容易的进行push pop 操作,其实使用string temp也可以,不过会比较麻烦。访问到叶子结点时,说明path中存放了一条合理的路径,我们直接将其放入res结果即可,在函数返回的时候path中之前新插入的元素随着栈帧的返回自行进行pop,省略了我们需要进行pop这一步骤。使用dfs先将每条路径存储在一个vector中,最后再从vector转入string中。,返回所有从根节点到叶子节点的路径。

2025-03-20 15:47:25 358

原创 dfs(十九)230. 二叉搜索树中第 K 小的元素

使用一个全局变量count来进行计数,中序遍历访问到第k个就进行更新全局变量res的结果。,请你设计一个算法查找其中第。小的元素(从 1 开始计数)。给定一个二叉搜索树的根节点。

2025-03-20 11:55:35 204

原创 dfs(十八)98. 验证二叉搜索树

给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。truefalse根节点的值是 5 ,但是右子节点的值是 4。[1, 104]性质解法二叉搜索树的中序遍历为一个有序序列!

2025-03-20 11:45:35 328

原创 dfs(十七)814. 二叉树剪枝 中等

给你二叉树的根结点root,此外树的每个结点的值要么是0,要么是1。返回移除了所有不包含1的子树的原二叉树。节点node的子树为node本身加上所有node的后代。只有红色节点满足条件“所有不包含 1 的子树”。右图为返回的答案。

2025-03-20 10:43:40 376

原创 树dfs(十六)129. 求根节点到叶节点数字之和 中等!!

本来是上面这样写的, 但遇到了有左右子树不存在的情况,导致后续left和right变量的更新失败,所以使用创建一个新变量 ret 来保存左右子树的结果 并且在向下递归的时候判断一下子树是否存在。这道题在递归函数名上需要更多的一个参数,prenum,要传入当前节点之前的大小,并且每深入一层就要给pre乘上10,向下传入pre * 10 + root->val。因此,数字总和 = 495 + 491 + 40 =计算从根节点到叶节点生成的。给你一个二叉树的根节点。是指没有子节点的节点。

2025-03-18 11:24:09 235

原创 树dfs(十五)2331. 计算布尔二叉树的值

AND 与运算节点的值为 False AND True = False。OR 运算节点的值为 True OR False = True。根节点是叶子节点,且值为 false,所以我们返回 false。根节点的值为 True ,所以我们返回 true。上图展示了计算过程。

2025-03-18 11:13:50 324

原创 dfs(十四)50. Pow(x, n)

【代码】dfs(十四)50. Pow(x, n)

2025-03-18 09:35:42 415

原创 dfs(十四)24. 两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。函数体:先去处理⼀下第⼆个结点往后的链表,然后再把当前的两个结点交换⼀下,连接上后⾯处。递归函数的含义:交给你⼀个链表,将这个链表两两交换⼀下,然后返回交换后的头结点;递归出⼝:当前结点为空或者当前只有⼀个结点的时候,不⽤交换,直接返回。

2025-03-18 09:06:30 307

原创 dfs(十三)206. 反转链表

先使用dfs访问到最后一个元素,然后用newhead保存新的头结点,最后使用head修改当前指针的后一个指针指向实现逆序操作。链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?,请你反转链表,并返回反转后的链表。

2025-03-17 23:24:51 353

原创 dfs(十二)21. 合并两个有序链表 递归解决

新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。

2025-03-17 22:06:44 315

原创 dfs(十一)面试题 08.06. 汉诺塔问题

在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在比它大的盘子上。(1) 每次只能移动一个盘子;

2025-03-17 21:36:17 201

原创 拓扑排序(二)210. 课程表 II

总共有 4 门课程。要学习课程 3,你应该先完成课程 1 和课程 2。并且课程 1 和课程 2 都应该排在课程 0 之后。总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为。返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回。多了一步再每次出队列的时候给res中进行一步尾插。如果不可能完成所有课程,返回。因此,一个正确的课程顺序是。

2025-03-13 19:37:05 245

原创 拓扑排序(一)207. 课程表

总共有 2 门课程。学习课程 1 之前,你需要先完成​课程 0;并且学习课程 0 之前,你还应先完成课程 1。总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。在选修某些课程之前需要一些先修课程。请你判断是否可能完成所有课程的学习?,表示如果要学习课程。

2025-03-13 19:24:09 233

原创 多源BFS(二十一)1162. 地图分析 中等

请你找出一个海洋单元格,这个海洋单元格到离它最近的陆地单元格的距离是最大的,并返回该距离。如果网格上只有陆地或者海洋,请返回。海洋单元格 (1, 1) 和所有陆地单元格之间的距离都达到最大,最大距离为 2。海洋单元格 (2, 2) 和所有陆地单元格之间的距离都达到最大,最大距离为 4。,上面的每个 单元格 都用。这两个单元格之间的距离是。你现在手里有一份大小为。

2025-03-13 12:43:36 172

原创 多源BFS(二十)1765. 地图中的最高点 中等

将所有的水域坐标加入队列中,然后利用队列进行bfs操作扩散至周围所有陆地,并更新其高度。任意安排方案中,只要最高高度为 2 且符合上述规则的,都为可行方案。找到一种安排高度的方案,使得矩阵中的最高高度值。所有安排方案中,最高可行高度为 2。蓝色格子是水域格,绿色格子是陆地格。如果有多种解法,请返回。上图展示了给各个格子安排的高度。

2025-03-13 12:08:55 333

Linux多线程-相关手写笔记

线程概念、线程控制、线程安全

2023-02-06

操作系统-银行家算法-银行家算法是操作系统的经典算法之一

银行家算法是操作系统的经典算法之一,用于避免死锁情况的出现。 它最初是为银行设计的(因此得名),通过判断借贷是否安全,然后决定借不借。 在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。 用在操作系统中,银行家、出借资金、客户,就分别对应操作系统、资源、申请资源的进程。 每一个新进程进入系统时,必须声明需要每种资源的最大数目,其数目不能超过系统所拥有的的资源总量。当进程请求一组资源时,系统必须首先确定是否有足够的资源分配给该进程,若有,再进一步计算在将这些资源分配给进程后,是否会使系统处于不安全状态如果不会才将资源分配给它,否则让进程等待。 (1)互斥条件:并发进程所要求和占有的资源是不能同时被两个以上进程使用或操作的,进程对他所需要的资源进行排他性控制。 (2)不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行剥夺,而且只能由获得该资源的进程自己释放。 (3)请求和保持条件:进程已经至少保持了一个资源,但又提

2023-01-26

《二叉树及应用》 数据结构中二叉树使用

[问题描述]建立一个二叉树,并对其进行4种遍历(前中后层)。 [要求] 使用递归和非递归,计算二叉树中节点的个数,树的深度等。 [目的] 通过对二叉树的应用,熟练运用递归,栈和队列。 [实现提示] 二叉树中节点的结构如下: class BNode { char m_value; //二叉树中节点的值 BNode* m_left; //指向左子树指针 BNode* m_right;//指向右子树指针 }; 1、课程设计目的和内容 主要包括:需求分析,模块功能要求,分析理解问题,明确问题; 2、算法的基本思想 主要包括:概要设计,详细设计,数据结构定义,流程图 以及各个模块之间的关系; 3、测试数据 列出对于给定的输入所产生的输出; 4、源程序及文档说明 程序最终源码\程序最终设计文档 5、心得体会 课程设计的收获,遇到问题的思考过程,程序的调试能力,以及对于数据结构这门课程的思考 6、参考文献 二叉树先序中序后续遍历递归与非递归的实现、掌握栈和队列的用法。了解结构体内部嵌套之间的关系 二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构

2023-01-26

数据结构课程设计-最短路径

最短路径问题是图论研究中的一个经典算法问题, 旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。 算法具体的形式包括: 确定起点的最短路径问题 - 即已知起始结点,求最短路径的问题。 确定终点的最短路径问题 - 与确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题。 确定起点终点的最短路径问题 - 即已知起点和终点,求两结点之间的最短路径。 全局最短路径问题 - 求图中所有的最短路径。 1、用邻接矩阵存储一张带权有向图。 2、对图进行从某一源点到其他各顶点的最短路径 3、输出最后结果(路径名称、路径长度)。 邻接矩阵建立包括:用二维数组存储信息。没有直达路径的为无穷。 用循环来判断最小值。 最终结果用一维数组存储。D[]存放源点到其他顶点的最短路径的长度,P[]存放该顶点最短路径的前驱顶点下标,visit[]为访问标识。初始全部值设为F,先把源点的标识设为T,后面每找到一个源点到其余顶点的最短路径,就将该顶点下标对应的标识置为T。直到全部顶点执行完毕。 输出一维数组D[

2023-01-26

空空如也

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

TA关注的人

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