自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 5/111

如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;给定一个二进制字符串 s 和一个正整数 n,如果对于 [1, n] 范围内的每个整数,其二进制表示都是 s 的 子字符串 ,就返回 true,否则返回 false。且包含n个节点的哈夫曼树要经过n-1次合并才能得到哈夫曼树。输入:s = "0110", n = 3输出:true。小注意:哈夫曼树中的节点度数为0或2,并没有1。包含n个叶子节点的哈夫曼树一共有2n-1个节点。子字符串 是字符串中连续的字符序列。

2023-05-11 22:59:32 98

原创 【无标题】

函数的返回值为最小循环长度,如果无法被K整除,则返回-1,表示不存在符合条件的数字序列。它的核心思想是利用哈希函数将关键字映射到数组的某个位置上,使得查找和插入的时间复杂度接近O(1)。首先定义一个哈希表结构体,其中包含两个成员:一是数组buckets用来存储哈希表中的元素,二是size表示buckets中元素的数量。给定正整数 k ,你需要找出可以被 k 整除的、仅包含数字 1 的最 小 正整数 n 的长度。输入:k = 1输出:1解释:最小的答案是 n = 1,其长度为 1。

2023-05-10 22:22:26 96

原创 【无标题】

具体实现方式为,枚举任意两个顶点,如果它们之间没有直接边相连,则它们之间的距离为它们通过中转点连接时的距离(即通过中转点到达另外一个顶点的距离加上两个顶点之间的距离)。如果它们之间已经有直接边相连,则它们之间的距离为它们之间的边权值。在实现中,首先对每个顶点到源点的距离进行初始化,然后选择一个距离源点最近的未确定最短路径的顶点,逐步扩大已确定最短路径的范围。首先将所有顶点之间的距离初始化为正无穷大(表示未知),然后将自身到自身的距离初始化为 0,将所有有直接边相连的顶点之间的距离初始化为它们之间的边权值。

2023-05-09 22:19:11 90

原创 【无标题】

状态转移方程描述了子问题与原问题之间的关系,是从子问题的最优解推导出原问题的最优解的公式。最长递增子序列问题是一个经典的动态规划问题,其目标是在一个无序的序列中,求解最长的递增子序列。例如序列 [1, 3, 2, 4, 5, 7, 6] 的最长递增子序列是 [1, 2, 4, 5, 7],长度为 5。具有最优子结构的问题有很多,例如背包问题、图的最短路径问题等。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6。

2023-05-08 22:16:01 78

原创 【无标题】

输入:time = [30,20,150,100,40]输出:3解释:这三对的总持续时间可被 60 整除:(time[0] = 30, time[2] = 150): 总持续时间 180(time[1] = 20, time[3] = 100): 总持续时间 120(time[1] = 20, time[4] = 40): 总持续时间 60。余数为 00 的歌曲。歌曲对的数量为 \textit{cnt}[0] \times (\textit{cnt}[0]-1)/2cnt[0]×(cnt[0]−1)/2。

2023-05-07 22:23:40 29

原创 【无标题】

链式存储结构:因为图很难确定有几个指针,所以难以用链表表示,故采用多重链表(邻接表,邻接多重表,十字链表)分析其二:顶点i的度即为第i行和i列的“1”的个数,如果是无向图就只要考虑每一行“1”的个数。图的邻接矩阵为一个二维数组,设为A.arcs【i】【j】(理解为两个顶点之间的关系)图没有顺序存储结构,但可以用二维数组来表示元素之间的关系(邻接矩阵)顶点表Vexs【n】就建立n个元素的数组存放n个顶点。如果存在一条弧或者一条边,则矩阵中记录【i】【j】为1。分析其一:无向图的邻接矩阵是对称的。

2023-05-05 23:46:15 34

原创 22/7.

输入:fruits = [[0,9],[4,1],[5,7],[6,2],[7,4],[10,9]], startPos = 5, k = 4输出:14解释:可以移动最多 k = 4 步,所以无法到达位置 0 和位置 10。输入:fruits = [[2,8],[6,3],[8,6]], startPos = 5, k = 4输出:9解释:最佳路线为:- 向右移动到位置 6 ,摘到 3 个水果- 向右移动到位置 8 ,摘到 6 个水果移动 3 步,共摘到 3 + 6 = 9 个水果。

2023-05-04 22:09:44 46

原创 【无标题】

若边(u,v)是一条具有最小权值的边,其中u属于U,v属于V-U,则必然存在一颗包含(u,v)的最小生成树。给定一个无相网络,在该网的所有生成树中,使得各边权值之和最小的那颗生成树成为该网的最小生成树,也叫最小代价树。生成树有很多种算法实现,比如常用的深度优先搜索(DFS)和广度优先搜索(BFS)等。然后就在U中顶点和V-U中顶点的边中选权值最小的边。3.一个有n个顶点的连通图的生成树有n-1条边。1.生成树的顶点个数与图的顶点个数相同。2.尚未落到生成树上的顶点集:V-U。

2023-04-27 21:47:28 52

原创 【无标题】

BFS(Breadth-First Search)又称广度优先搜索,是一种基于图的遍历算法,它从指定的起始节点开始遍历图,依次访问其相邻的节点,直到遍历完整个图为止。接着找到与该节点相邻的未被访问的节点中的一个,继续以该节点为起始节点进行深度优先搜索。从已给的联通图中某顶点出发,沿着一些边访遍图中的所有顶点,并且每个顶点仅仅被访问一次,叫做图的遍历,是图的基本运算。图中可能存在回路,且图的任一顶点都有可能与其他顶点联通,在访问完某点之后可能会沿边回到曾经访问过的节点。*顶点被访问后置为1,避免重复访问。

2023-04-26 22:01:15 230

原创 【无标题】

此时油箱有 = 0 + 4 = 4 升汽油开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。两个数组的长度均为 n。今日的沙雕题目,自己给自己整蒙圈了,一开始就想用选排,但老师通不过,发现自己忘漏了一个赋值点,。

2023-04-25 21:59:58 31

原创 23/4/24

今天跟王卓的视频把哈夫曼树细过了一遍,还有应用场景没看完,线代就要结课考试了,觉得有必要多费点心思在上面,之后边学Java边巩固数据结构的知识。2.在F中选取两颗根节点的权值最小的树作为左右子树,构造成一颗新的二叉树,且设置新的二叉树的根节点的权值为其左右子树上的根节点的权值之和。“带权路径长度最短”是在“度相同”的树中比较而得到的结果,因此有最优二叉树,最优三叉树之城等。且包含n个节点的哈夫曼树要经过n-1次合并才能得到哈夫曼树。树的构成自我理解为:权值大的离树根近,权值小的离树根远。

2023-04-24 22:39:53 80

原创 【无标题】

即:为了使得某串二进制数据的编码后所占用的空间最小,应该将出现频率最高的数据编码长度最短,而出现频率低的数据编码长度较长,保证编码后的总体长度最短。2.选择出现频率最小的两个节点,合并成一个新的节点,频率等于两个子节点的频率之和;节点的带权路径长度:从根节点到该节点之间的路径长度与该节点的权的乘积。权:将树中的节点赋给一个含有某种意义的值,则称这个树脂为节点的权。路径:从树中一个节点到另一个节点的分支构成这两个节点的路径。树的带权路径长度:树中所有叶子节点的带权的路径长度之和。

2023-04-23 23:31:37 32

原创 超市管理系统(入门)

今天将管理系统的功能都实现了,在一直找毛病并修改毛病,现在已经基本完善。8.退出系统会更新文件内容,下次打开就是修改后的内容。

2023-04-22 23:13:39 276 2

原创 【无标题】

strtok找到字符串中的一个标记,用‘\0’结尾,并且返回一个指向这个标记的指针;函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(’\0’)才结束转换,并将结果返回。应用于项目中,先从已经创建的文件中读取数据到树中,最后在将已修改的数据用“w”的方式打开文件并存入其中。注意:这几个函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过。以上几个函数:str 为要转换的字符串,endstr 为第一个不能转换的字符的指针。

2023-04-21 23:01:20 36

原创 【无标题】

今天茶花会,感觉前辈们对自己的未来发展的方向感都比较明确,对这个专业都有较强烈的认知。我感觉自己对代码的兴趣并不是很强烈的,更想学3dmax,以及pr,ae之类的技能,对视频剪辑更感兴趣。但目前还是得加强自己的专业知识,以及学习能力。例如输入1 之后就清贫然后输入编号查寻。注意:在删除节点中删除有左右节点的节点。现在还在对子函数进行完善实现,。2.左子树的所有节点都小于根节点。3.右子树的所有节点都大于根节点。4.每个节点左右子树也是BST。1.BST首先是一颗二叉树。

2023-04-20 23:38:30 43

原创 【无标题】

今天想对物品进行一次线索二叉树的存储,但感觉还是理解不够,插入和删除涉及到前驱和后驱,并且每次都需要进行一次更新并线索化,写的云里雾里。这是一个对线索二叉树进行构建以及增删的C语言代码,对它理了好久人都麻了,应用于系统中维护起来效率反而更低效。感觉超市系统只能利用双向链表进行一个建立;网上也很少有关线索二叉树的一个增删操作,因其操作繁琐,只适合对已存数据进行线索化然后进行遍历查找。格式上还要对其进行修改,将输出全部放到子函数中,并将树存储改为双向链表存储,麻了,想换个项目搞了。

2023-04-19 23:03:34 42

原创 【无标题】

如果只是在原二叉树的基础上利用空结点,那么就存在着这么一个问题:我们如何知道某一结点的lchild是指向他的左孩子还是指向前驱结点?现在在跟王卓老师的课对线索二叉树进行详细学习,看到文件操作感觉又不太熟悉了,还要对文件知识在次进行复习,并构思如何将物品存入二叉树实现,以及管理系统的一个界面实现还较模糊。二叉树是通过遍历寻找目标节点,比较的费时间,而线索二叉树是将某些节点的空指针改为指向前驱或后继节点的线索,使得遍历时不需要通过递归或栈来完成。RTag为0是指向该结点的右孩子,为1时指向该结点的后继。

2023-04-18 23:07:11 41

原创 【无标题】

例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。输出:true解释:我们可以按以下顺序执行:push(1), push(2), push(3), push(4), pop() -> 4,push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1。//定义节点结构体,包含指向左右子树的指针、节点数据、以及是否为线索的标记。

2023-04-17 23:55:58 49

原创 笔记:单调栈

突然有一天xx学姐研究起了这些柱子,如果用柱状图来表示这些柱子,在该柱状图中,能够形成的矩形的最大面积是多少呢?单调栈解法就是通过单调栈找到某一条柱子左右两边第一个小于它的柱子的下标,以此来计算当该条柱子位最短边时的最大矩阵的大小,当我们找遍了所有的柱子之后,也就覆盖了所有取得最小的可能情况。此时,除了初始化的-1外还有1,4,5三个元素没有出栈,那么只要最后都用0来作为它的右值那么就可以将它们全部出栈了。理解为将每个元素的下标进行入栈和出栈,计算时可以直接作为底的长度使用。以下图解来自:逗比克星。

2023-04-17 00:45:20 41

原创 笔记:单调队列

(2)先删后插:当新元素大于尾结点时,那就直接删除队尾元素(因为它已经没可能成为最大值了),就直接tail--,从队尾出队。一直删除,直到对空或者遇到一个大于它的值,插入在他后面(++tail)(1):直接插入:新元素小于队尾元素时就直接从尾插入即可(这里用的是递减)(tail++);1.队头出队:当队头的元素从窗口滑出是,队头元素出队。注意:队列要存储窗口元素的下标值,以便于判断队头的一个出队。单调队列:队列内的元素值是单调的,递增或者递减。例如,队头的9要滑出窗口,那么就直接pass它。

2023-04-16 00:53:56 78

原创 笔记:简单了解线索二叉树以及无向图的构建

线索二叉树是在普通二叉树的基础上加上了一些线索,它将二叉树中的空指针用线索来替代,使得遍历二叉树时不必再通过指针跳转和递归等操作来寻找下一个节点,从而提高了算法的效率。线索二叉树的线索分为前驱线索和后继线索,前驱线索表示节点在中序遍历中的前一个节点,而后继线索则表示节点在中序遍历中的后一个节点。2.按照中序遍历的顺序,记录当前访问节点的前驱节点,然后修改当前节点的左右指针,使其分别指向前驱节点和后继节点,最后将当前节点作为下一个节点的前驱节点。3.初始化邻接矩阵,将每个权值初始化为最大值。

2023-04-15 01:01:59 163

原创 笔记:归并排序

1.将序列中带排序数字分为若干组,直到每个数字分为一组。2.将若干组进行两两合并,保证合并后为有序的。1.按一定间隔分成若干个子序列。2.对每个子序列进行插入排序。3.重复操作直到排序完成。

2023-04-14 00:09:06 33

原创 笔记:图以及cpp基础

如int fun(int i,char a)和void fun(char a,int i)就可以构成函数重载,根据函数名修饰的原理我们可以得到_funic和 _funci两个经过修饰之后得到的函数名,在进行修饰后的函数名显然是不同的。定义:同一个作用域内,相同函数名,参数不同(类型不同,个数不同)可以构成函数重载(和返回值无关)分析其二:顶点i的度即为第i行和i列的“1”的个数,如果是无向图就只要考虑每一行“1”的个数。图的邻接矩阵为一个二维数组,设为A.arcs【i】【j】(理解为两个顶点之间的关系)

2023-04-12 21:53:38 1915

原创 笔记:图的基础概念以及贪心案例

10.强连通图:在有向图中,如果任意两个节点之间都存在一条路径,则该图称为强连通图。7.环:在一条路径中,如果一个结点被访问了两次及以上,则该路径就称为环。1.顶点(Vertex):是图中的基本单位,(理解为有穷非空的集合)。2.边(Edge):是节点之间的联系,通常由两个节点之间的连线来表示。6.图的路径:从一个结点出发经过若干条边到达另一个结点的过程称为路径。8.连通图:在无向图中,如果存在一条路径可以从一个节点到达另一个。11.子图:一个图的一部分称为它的子图。4.无向图:边没有方向的图称为无向图。

2023-04-11 23:54:07 30

原创 【无标题】

3.如此循环:每次用局部最优解从而得出全体的最优解。例如:抗美援朝时彭德怀元帅用的零敲牛皮糖战术。其中sort函数是在cpp的库函数#include "algorithm"下的排序函数。1.对当前的一步作出最佳的选择。例如:对于贪财的人,每次都拿最大的一张钞票。第五题涉及的贪心算法以及第六题的二叉树的构建和遍历算法都不了解,故无从下手。今天做了测试,算法方面还是十分欠缺。第一题碰巧用遍历暴力解决的滑动窗口。2.作出选择后从不返回(不回溯)经典案例:海盗船打劫事件。

2023-04-11 00:49:33 30

原创 笔记:线段树的基本概念以及简单实现

线段树将一个序列分成若干个区间,在每个区间上记录该区间的信息(例如区间和、最大值、最小值等),然后通过不断合并区间信息得到整个序列的信息。查询从根节点开始递归查找覆盖目标区间的节点,修改从叶子节点开始递归更新祖先节点的信息。6.应用广泛:线段树可以用来解决区间查询、区间修改等问题,也可以扩展到二维平面上的矩形区间查询等问题。2.节点信息:线段树的每个节点代表一个区间,并保存该区间的信息(例如区间和、最大值等)。1.区间划分:线段树将一个序列递归地划分为若干个区间,直到每个区间都只包含一个元素。

2023-04-09 22:18:05 75

原创 笔记:根据二叉树的前中序遍历确定二叉树

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]参考了题解中的递归思想进行解答,除前中序确定二叉树外,还有前后序确定和,中后序确定二叉树,之后进行学习。已知前序遍历:A,B,D,F,C,E,G,H,中序遍历:B,F,D,A,G,E,H,C。1.先序遍历的第一个元素为树的根节点。

2023-04-09 01:15:49 888 1

原创 笔记:数组基础概念及广义表

在这个广义表中,第一个元素是整数1,第二个元素是一个子表 (2, 3, 4),它包含了三个整数元素。数组指针也称为指向数组的指针,是指一个指针变量,该指针变量指向一个数组。从运行结果中不难看出,指针数组加1其实就是在列上加了1,而数组指针加1是对行进行了加1的操作。2.子表:广义表中嵌套的另一个广义表,也可以看做广义表的一个元素。4.尾部:广义表中除了头部之外的部分,可以是空表或另一个广义表。1.元素:数组中存储的数据单元,每个元素都具有相同的数据类型。指针数组是一个数组,其中的每个元素都是指针类型。

2023-04-07 23:02:19 59 1

原创 笔记:串的基本概念以及匹配串基础算法

nextval 是在 KMP 算法中使用的一种改进方法,它可以对 next 数组进行优化,以达到更快的匹配速度。否则,我们可以跳过一些字符,直接将 j 跳到 nextval[j] 所指向的位置,这样就可以加速匹配过程了。1.字符集:表示可以在串中使用的字符集合。5.匹配:指在一个串中查找另一个串出现的过程,可以用来进行模式匹配、字符串搜索等。6.模式串:是被匹配的串,也称为模式,一般是较短的字符串。2.子串:指一个串中任意连续的一段字符所组成的子序列。4.后缀:指一个串中以最后一个字符为结尾的任意子串。

2023-04-06 22:07:24 177 1

原创 笔记:树及二叉树的基本概念

以下是初步编写的二叉树创建节点函数,释放二叉树函数,以及前,中,后序遍历的子函数。8.子树:以某个节点为根节点的子树,包含该节点及其所有的后代节点。7.节点高度:表示从当前节点到叶子节点的最长路径长度,6.节点深度:表示从根节点到当前节点的路径长度,3.满二叉树:即有2的n次方减1个节点的二叉树。3.双亲节点:某个节点的直接上一级的节点。5.兄弟节点:即在同一双亲节点下的节点。1.根节点:树的顶部节点,没有父节点。4.子节点:某个节点的直接下一级节点。2.叶子节点:没有子节点的节点。

2023-04-06 00:33:52 71 3

空空如也

空空如也

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

TA关注的人

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