Algorithm Advance
文章平均质量分 53
always on the way
夜澜听雨声
这个作者很懒,什么都没留下…
展开
-
树和二叉树_5
n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历。进阶:递归法很简单,你可以使用迭代法完成此题吗?原创 2024-07-14 10:48:20 · 165 阅读 · 0 评论 -
树和二叉树_4
哈夫曼树构造方法:选取出现概率值最低的两个节点构成二叉树,合成一个概率为二者之和的节点加入节点队列中,不断重复此过程即可。背景:需要对不同的字符进行编码,需要让编码尽可能短,且不能有重复前部,不然无法识别。获得最优变长编码,使用哈夫曼树。原创 2024-07-13 16:38:52 · 204 阅读 · 0 评论 -
树和二叉树_3
为了更好的将二叉树序列化,便于存储和传输。我们引入二叉树的广义表示法。原创 2024-05-20 11:36:16 · 249 阅读 · 0 评论 -
树和二叉树_2
根据遍历方式可以实现二叉树的序列化。就是通过中序加另一个序还原二叉树。线索化的目的是为了二叉树通过访问链表形式进行遍历,即不需要递归。原创 2024-05-19 13:39:23 · 215 阅读 · 0 评论 -
树和二叉树_1
树的节点代表【集合】,树的边代表【关系】。树的根节点代表全集。原创 2024-05-14 10:04:55 · 156 阅读 · 0 评论 -
栈和队列_11
数据可能会出现括号情况,还有可能出现多余括号情况,忽略多余括号,正常计算即可;给出一个表达式,其中运算符仅包含 +,-,*,/,^ 要求求出表达式的最终值。 数据可能会出现负数情况,幂次不可能为负数,除法采用向 0取整。 数据保证不会出现大于 max long int的数据; 注意:−9 和 +9 分别代表负数和正数的 9。共一行,即为表达式。表达式长度不会超过1000。共一行,既为表达式算出的结果。原创 2024-05-12 13:22:56 · 282 阅读 · 0 评论 -
栈和队列_10
在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。// 返回 false,队列已满。enQueue(value): 向循环队列插入一个元素。// 返回 true。// 返回 true。// 返回 true。// 返回 true。// 返回 true。MyCircularQueue(k): 构造器,设置队列长度为 k。deQueue(): 从循环队列中删除一个元素。// 返回 true。如果队列为空,返回 -1。原创 2024-05-12 10:21:21 · 421 阅读 · 0 评论 -
栈和队列_9
Candela是一名漫画家,她有一个奇特的爱好,就是在纸上画括号。这一天,刚刚起床的 Candela画了一排括号序列,其中包含小括号 ()、中括号 [] 和大括号 {},总长度为 N。1个长度为 N的括号序列。(5≤N≤10000)一个整数,表示最长的美观的连续子序列的长度。1.用栈处理得到每对括号的匹配关系。2.根据匹配关系获得最长的长度。原创 2024-05-09 13:09:15 · 292 阅读 · 0 评论 -
栈和队列_8
给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false。1.模拟入栈出栈,找到正确序列。原创 2024-05-05 11:30:10 · 254 阅读 · 0 评论 -
栈和队列_7
有 n 列火车按 1 到 n 的顺序从东方左转进站,这个车站是南北方向的,它虽然无限长,只可惜是一个死胡同,而且站台只有一条股道,火车只能倒着从西方出去,而且每列火车必须进站,先进后出。 进站的火车编号顺序为 1∼n,现在请你按火车编号从小到大的顺序,输出前 20 种可能的出站方案。2.使用全排列结果,利用一个栈来模拟,入栈出栈合法,即输出结果。1.这道题等于是问全排列中前20种合法的出栈序列。输出前 20 种答案,每行一种,不要空格。输入一行一个整数 n。原创 2024-05-05 10:08:48 · 249 阅读 · 0 评论 -
栈和队列_6
给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true。3.比较两栈内容,相同为true,不同为false。注意:如果对空文本输入退格字符,文本继续为空。1.编写压栈函数,#就出栈(栈不为空)s 和 t 都会变成 “ac”。2.两个字符串调用函数入栈。原创 2024-05-04 14:45:19 · 300 阅读 · 0 评论 -
栈和队列_5
定义三元组(a,b, c)(a,b,c 均为正数)的距离 D=|a-b|+|b-c|+|c-a|。请设计一个尽可能高效的算法,计算并输出所有可能的三元组(a, b, c)(a∈S1,b∈S2,c∈S3)中的最小距离。例如 S1={-1, 0, 9}, S2={-25,-10,10,11},S3={2,9,17,30,41},则最小距离为 2,相应的三元组为(9,10,9)。返回一个整形值,表示所有可能的三元组(a, b, c)(a∈S1,b∈S2,c∈S3)中的最小距离。原创 2024-05-04 14:02:45 · 302 阅读 · 1 评论 -
栈和队列_4
在这道题目中,我们会给定一篇代码,并希望你能找到指定函数第一次被调用时的调用链,将其打印出来;众所周知,计算机程序中通常含有许多的函数调用,而调用关系往往是嵌套的,也就是说被调用的函数可能会调用另一个函数,这导致我们常常在debug的时候遇到困难,并希望能弄清楚其上层的一系列调用关系。 为了降低难度,给定的代码是经过极度简化的,它只包括函数调用和返回语句(表示退出这层调用),并且没有任何额外的语法格式。1. 如果指定的函数在代码中出现了,那么打印出其调用关系链,用“->”连接;原创 2024-05-03 10:11:01 · 381 阅读 · 0 评论 -
栈和队列_3
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。2.遇到右括号就和栈顶的左括号做匹配:成功则栈顶元素出栈,失败则括号序列不合法。程序中可以常量+1视为进,常量-1视为出,常量>=0继续,否则中断,最后判0。1任意位置统计时,合法括号序列的左括号数量一定大于右括号数量。每个右括号都有一个对应的相同类型的左括号。2最后一个位置上,左括号数量等于右括号数量。1.问题简化成只有一种括号,怎么做?左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。原创 2024-05-02 20:23:50 · 145 阅读 · 2 评论 -
栈和队列_2
1.一段连续的存储区,用于存储元素,整型变量size表示其大小。:从栈顶插入元素,top+1。:从栈顶弹出元素,top-1。2.top:指向栈顶的指针。操作:FILO/先进后出。原创 2024-05-02 17:21:11 · 185 阅读 · 2 评论 -
栈和队列_1
1.一段连续的存储区,用于存储元素,整型变量size表示其大小。3.tail:记录队列的队尾指针(最后元素后的空位)3.head:记录队列的队首指针(非空的首个元素):从队尾插入元素队尾指针后移,size+1。:从队首弹出元素队首指针后移,size-1。2.整型变量count:队列的大小。操作:FIFO/先进先出/尾入头出。原创 2024-05-01 17:00:07 · 126 阅读 · 1 评论 -
顺序表与链表_10
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left原创 2024-04-27 16:45:29 · 254 阅读 · 0 评论 -
顺序表与链表_9
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。给定一个链表的头节点 head ,返回链表开始入环的第一个节点。如果链表无环,则返回 null。进阶:你是否可以使用 O(1) 空间解决此题?:链表中有一个环,其尾部连接到第二个节点。:返回索引为 1 的链表节点。原创 2024-04-26 20:08:08 · 265 阅读 · 0 评论 -
顺序表与链表_8
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。2.遍历链表至快慢指针,快指针到末尾,慢指针指向断链前一个节点。1.先建立虚拟头节点,使删除头节点也可以统一处理。进阶:你能尝试使用一趟扫描实现吗?3.断链,回收删除节点空间。原创 2024-01-23 21:24:46 · 387 阅读 · 1 评论 -
顺序表与链表_7
给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。2.遍历链表至快慢指针,快指针到末尾,慢指针指向断链前一个节点。1.先统计链表节点个数n,k对n取余化简成一轮链表内移动。3.断链,将尾指针与头结点相连。原创 2024-01-22 22:58:00 · 352 阅读 · 0 评论 -
顺序表与链表_6
把这道题目想象成一个链表,每次变换的值就是链表的下一个节点,无限循环说明链表内有环。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 n 是 快乐数 就返回 true;不是,则返回 false。3.如果快慢指针碰头,则说明有环,如果任意一个指针置1,也不是快乐数。对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。如果这个过程 结果为 1,那么这个数就是快乐数。编写一个算法来判断一个数 n 是不是快乐数。2.遍历链表至快慢指针不为1。原创 2024-01-16 21:05:34 · 374 阅读 · 1 评论 -
顺序表与链表_5
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true。否则,返回 false。给你一个链表的头节点 head ,判断链表中是否有环。2.遍历链表至快慢指针不为NULL。3.如果快慢指针碰头,则说明有环。原创 2024-01-16 20:21:52 · 539 阅读 · 1 评论 -
顺序表与链表_4
2.head== NULL||head->next== NULL直接返回head。1.reverseList(ListNode* head)返回反转链表的头节点。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。3.头节点后面的节点是反转后的尾节点,反转后将头节点接在该节点之后。2.遍历链表使用头插法将节点插入new_head后面。3.将反转后的链表头节点new_head返回。1.创建虚拟头节点new_head。原创 2024-01-16 15:48:06 · 380 阅读 · 1 评论 -
顺序表与链表_3
头指针指向链表的最后一个节点(为了便于在链首插入节点)多了一个指向前一个节点的指针pre。原创 2024-01-15 21:43:06 · 513 阅读 · 1 评论 -
顺序表与链表_2
头部节点是以一个链表节点,有存储信息的单元但不存储信息。:找到节点前一个节点p,新节点指向插入位置节点,p指向新节点。:头部指针没有存储信息的单元,即头部只是一个指针。:将前一个节点的next指针指向下一个节点地址。1.除head节点外都含有数据信息。2.指向下一个节点的指针信息。原创 2024-01-14 16:36:29 · 362 阅读 · 1 评论 -
顺序表与链表_1
插入时将该位置及后元素向后移一位,count+1。:删除时将该位置后元素向前移一位,count-1。3.整型变量count:顺序表存储了多少个元素。1.一段连续的存储区,用于存储元素。2.整型变量size:顺序表的大小。原创 2024-01-10 18:46:47 · 356 阅读 · 0 评论 -
递归函数_5
规划师设计了一个极其复杂的方案:当城市规模扩大之后,把与原来城市结构一样的区域复制或旋转 90 度之后建设在原来的城市周围(详细地说,将原来的城市复制一遍放在原城市上方,将顺时针旋转 90 度后的城市放在原城市的左上方,将逆时针旋转 90 度后的城市放在原城市的左方),再用道路将四部分首尾连接起来,如下图所示。 接下来 T 行,每行输入三个整数 N,S,D。:对于每次询问输出一行一个整数,表示两点间的直线距离。城市等级为n,城市序号为s,坐标为x,y。给递归函数一个明确的语义,即int f(n)原创 2024-01-10 10:19:21 · 474 阅读 · 0 评论 -
递归函数_4
从 1−n 这 n 个整数排成一排并打乱次序,按字典序输出所有可能的选择方案。3.假设递归函数调用返回结果正确,实现本层函数逻辑。:每行一组方案,每组方案中两个数之间用空格分隔。给递归函数一个明确的语义,即int f(n)1.f(i,n)从第i个位置枚举n位全排列。2.实现边界条件时的程序逻辑,即f(1) 注意每行最后一个数后没有空格。2. i==n→返回。原创 2024-01-08 16:19:56 · 344 阅读 · 0 评论 -
递归函数_3
从 1−n 这 n 个整数中随机选取任意多个,每种方案里的数从小到大排列,按字典序输出所有可能的选择方案。从 1−n 这 n 个整数中随机选取 m 个,每种方案里的数从小到大排列,按字典序输出所有可能的选择方案。1.f(i,j,n) i表示枚举第i位的值,当前位置最小可选取j,最大可选取数字n。1.f(i,j,n) i表示枚举第i位的值,当前位置最小可选取j,最大可选取数字n。:每行一组方案,每组方案中两个数之间用空格分隔。:每行一组方案,每组方案中两个数之间用空格分隔。(1≤m≤n≤10)原创 2023-12-30 16:10:30 · 337 阅读 · 1 评论 -
递归函数_2
假设有 n 个连续的弹簧板,每个弹簧板占一个单位距离,a[i] 代表代表第 i 个弹簧板会把小球向前弹 a[i] 个距离。如果小球落到某个弹簧板后,经过一系列弹跳会被弹出弹簧板,那么小球就能从这个弹簧板弹出来。有一个小球掉落在一串连续的弹簧板上,小球落到某一个弹簧板后,会被弹到某一个地点,直到小球被弹到弹簧板以外的地方。现在小球掉到了1 号弹簧板上面,那么这个小球会被弹起多少次,才会弹出弹簧板。:第一个行输入一个 n 代表一共有 n(1≤n≤100000)个弹簧板。:输出一个整数,表示小球被弹起的次数。原创 2023-12-30 15:25:09 · 398 阅读 · 1 评论 -
递归函数_1
路飞买了一堆桃子不知道个数,第一天吃了一半的桃子,还不过瘾,又多吃了一个。以后他每天吃剩下的桃子的一半还多一个,到 n天只剩下一个桃子了。路飞想知道一开始买了多少桃子。3.假设递归函数调用返回结果正确,实现本层函数逻辑。给递归函数一个明确的语义,即int f(n)2.实现边界条件时的程序逻辑,即f(1):一个整数 n(2≤n≤30)1.f(n)能吃n天的桃子数量。原创 2023-12-30 15:12:54 · 405 阅读 · 1 评论