
Algorithm Problems
文章平均质量分 75
Algorithm Problems
HEX9CF
Full Stack Developer | Github: HEX9CF | Email: aGV4OWNmQGFsaXl1bi5jb20=
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【数据结构题集(c语言版)】哈夫曼编/译码器 题解(映射+优先队列+哈夫曼树)
利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。原创 2024-11-26 10:14:12 · 866 阅读 · 0 评论 -
【数据结构题集(c语言版)】哈希表设计 题解(哈希表+位集合+除留余数法+伪随机探测法)
针对某个集体(比如你所在的班级)中的“人名"设计一个哈希表,使得平均查找长度不超过 R,完成相应的建表和查表程序。原创 2024-11-26 10:13:22 · 564 阅读 · 0 评论 -
【数据结构题集(c语言版)】内部排序算法比较 题解(起泡排序+直接插入排序+简单选择排序+快速排序+希尔排序+堆排序)
在教科书中,各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶或大概执行时间。试通过随机数据比较各算法的关键字比较次数和关键字移动次数,以取得直观感受。原创 2024-08-21 13:50:56 · 293 阅读 · 0 评论 -
【数据结构题集(c语言版)】文学研究助手 题解(字符串+文件读取+KMP算法)
文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。试写一个实现这一目标的文字统计系统,称为“文学研究助手”。原创 2024-08-20 10:37:46 · 439 阅读 · 0 评论 -
【数据结构与算法】二叉排序树的合并(二叉排序树+二叉链表+中序遍历)
设计一个算法,将两棵二叉排序树合并成一颗二叉排序树。二叉排序树采用二叉链表存储。原创 2024-08-20 10:37:42 · 810 阅读 · 0 评论 -
【数据结构与算法】计算孩子链存储的树中叶子节点个数算法 C++实现(树+孩子链+深度优先搜索)
假设一棵非空树采用孩子链存储结构,每个结点值均为单个字符。请设计一个算法求树中的叶子结点个数。原创 2024-08-19 14:32:58 · 655 阅读 · 0 评论 -
【数据结构题集(c语言版)】文学研究助手 题解(字符串+映射+集合+文件读取)
文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。试写一个实现这一目标的文字统计系统,称为“文学研究助手”。原创 2024-08-19 14:32:53 · 1015 阅读 · 0 评论 -
【数据结构题集(c语言版)】魔王语言解释 题解(字符串+链栈)
有一个魔王总是使用自己的一种非常精练而抽象的语言讲话,没有人能听得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的:在这两种形式中,从左到右均表示解释。试写一个魔王语言的解释系统,把他的话解释成人能听得懂的话。原创 2024-08-18 13:29:56 · 871 阅读 · 0 评论 -
【数据结构题集(c语言版)】魔王语言解释 题解(字符串+栈)
有一个魔王总是使用自己的一种非常精练而抽象的语言讲话,没有人能听得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的:在这两种形式中,从左到右均表示解释。试写一个魔王语言的解释系统,把他的话解释成人能听得懂的话。原创 2024-08-18 13:29:51 · 739 阅读 · 0 评论 -
【数据结构与算法】为通讯电文设计哈夫曼编码 C++实现(映射+优先队列+哈夫曼树)
设用于通讯的电文由n个字母组成,给出字母在电文中出现的频率。试为这n个字母设计哈夫曼编码。原创 2024-08-17 14:18:11 · 775 阅读 · 0 评论 -
【数据结构与算法】计算孩子链存储的树中度为k的结点个数算法 C++实现(树+孩子链+深度优先搜索)
假设一棵非空树采用孩子链存储结构,每个结点值均为单个字符。设计一个算法求树中度为k的结点个数。在这个问题中,"度"是指一个结点有多少个子节点。原创 2024-08-17 14:18:07 · 816 阅读 · 0 评论 -
【数据结构与算法】输出二叉树中从每个叶子结点到根结点的路径 C++实现(二叉树+栈+深度优先搜索)
给定一棵二叉树的后序遍历序列和中序遍历序列in[s2..t2],设计一个算法,输出二叉树中从每个叶子节点到根节点的路径。请使用栈的数据结构解决。原创 2024-08-10 13:56:39 · 744 阅读 · 0 评论 -
【数据结构与算法】通过层次遍历判断完全二叉树 C++实现(完全二叉树+二叉链表+层次遍历+循环队列)
给定一棵二叉树的后序遍历序列和中序遍历序列in[s2..t2],首先构造这棵二叉树,然后设计一个算法,判断这棵二叉树是否是完全二叉树。请使用层次遍历的方法解决。原创 2024-08-10 13:56:34 · 515 阅读 · 0 评论 -
【数据结构题集(c语言版)】约瑟夫环 题解(循环链表+模拟+循环)
约瑟夫(Joseph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。原创 2024-08-09 13:54:33 · 393 阅读 · 0 评论 -
【数据结构与算法】根据后序遍历序列和中序遍历序列构造二叉树 C++实现(二叉树+二叉链表+递归)
给定一棵二叉树的后序遍历序列和中序遍历序列in[s2..t2],设二叉树采用二叉链表存储,设计一个算法构造这棵二叉树。请使用递归方法解决。原创 2024-08-09 13:54:28 · 1025 阅读 · 0 评论 -
【数据结构与算法】十字链表存储的稀疏矩阵加法运算算法 C++实现(十字链表+线性代数+矩阵)
给定两个用十字链表存储的稀疏矩阵,你需要编写一个程序,实现这两个矩阵的加法运算。原创 2024-08-08 13:59:10 · 1092 阅读 · 0 评论 -
【数据结构与算法】三元组顺序表存储的稀疏矩阵快速转置算法 C++实现(元组+顺序表+线性代数+矩阵)
请实现一个快速转置法来实现矩阵的转置。你将被给予一个矩阵,你需要输出该矩阵的转置。原创 2024-08-08 13:58:57 · 1474 阅读 · 0 评论 -
【数据结构与算法】删除循环队列中第k个元素的算法 C++实现(循环队列+模运算)
数组a[MaxSize]用作一个循环队列,front指向循环队列中队头元素的前一个位置,rear指向队尾元素的位置。设计删除队列中第k个元素的算法。原创 2024-08-07 13:27:01 · 617 阅读 · 0 评论 -
【数据结构与算法】在循环队列中第k个元素之后插入元素的算法 C++实现(循环队列+模运算)
数组a[MaxSize]用作一个循环队列,front指向循环队列中队头元素的前一个位置,rear指向队尾元素的位置。设计在队列中第k个元素之后插入item的算法。原创 2024-08-07 13:26:55 · 423 阅读 · 0 评论 -
【数据结构与算法】利用链栈实现带头结点的单链表的翻转算法 C++实现(单链表+链栈)
有一个带头结点的单链表L,设计一个算法利用一个链栈将其所有结点逆置。原创 2024-08-06 14:49:55 · 415 阅读 · 0 评论 -
【数据结构与算法】用front、rear、MaxSize表示循环队列中元素个数 C++实现(循环队列+模运算)
数组a[MaxSize]用作一个循环队列,front指向循环队列中队头元素的前一个位置,rear指向队尾元素的位置。用front、rear、MaxSize表示队列中元素个数。原创 2024-08-06 14:49:50 · 445 阅读 · 0 评论 -
【数据结构与算法】平均时间复杂度为O(1)的单链表结点删除算法 C++实现(单链表+循环)
已知一个带头结点的单链表L存放n个元素,其中结点类型为(data,next),p指向其中某个结点。请设计一个平均时间复杂度为O(1)的算法删除结点p,并且说明你的算法的平均时间复杂度为O(1)。原创 2024-08-05 14:24:23 · 692 阅读 · 0 评论 -
【数据结构与算法】双向链表中查找并与后继结点交换节点值的算法 C++实现(双向链表+循环)
有一个双链表L,设计一个算法查找第一个值为x的结点,将其与后继结点进行交换。原创 2024-08-04 13:12:19 · 296 阅读 · 0 评论 -
【数据结构与算法】双向链表中指定值前后插入新元素的算法 C++实现(双向链表+循环)
分别在带头结点的双链表中的第一个值为x的结点之前、之后插入元素值为y的结点,分别编写各自的算法。原创 2024-08-04 13:12:14 · 375 阅读 · 0 评论 -
【数据结构与算法】无头结点的单链表的原地反转算法 C++实现(单链表+循环)
设有一个表头指针为L的无头结点的非空单链表。设计一个算法,将链表中所有结点的链接方向逆转,即要求仅利用原表的存储空间(也就是说,算法的空间复杂度为O(1))。原创 2024-08-03 19:09:26 · 530 阅读 · 0 评论 -
【数据结构与算法】查找带头结点的单链表中倒数第k个结点的算法 C++实现(单链表+双指针法)
设L是一个带头结点的单链表的表头指针,结点结构为(data,Link),在不改变链表的前提下,设计一个算法,查找链表中倒数第k个结点(k为正整数)。若查找成功,算法输出该结点的元素值,并返回1;否则,只返回0。原创 2024-08-02 12:51:51 · 994 阅读 · 0 评论 -
【数据结构与算法】原地合并递增递减顺序表为单一递增顺序表的算法 C++实现(归并排序+顺序表)
设顺序表A有n+m个元素,前n个元素递增有序,后m个元素递减有序。设计一个算法,把这两部分合并成一个全部递增有序的顺序表,并分析算法的时间复杂度,要求空间复杂度为O(1)。原创 2024-08-02 12:51:46 · 526 阅读 · 0 评论 -
【数据结构与算法】基于动态内存分配的顺序表构造算法 C++实现(顺序表+动态内存分配)
设计一个算法,依次读入数组A[m]中的数据,创建一个用动态存储分配构造的顺序表L。注: L的类型定义为SqList。原创 2024-08-01 13:58:41 · 713 阅读 · 0 评论 -
【力扣 860】柠檬水找零 C++题解(贪心算法+模拟+分支)
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false。示例 1:输入:bills = [5,5,5,10,20]原创 2024-07-16 11:28:49 · 513 阅读 · 0 评论 -
【力扣 1523】在区间范围内统计奇数数目 C++题解(数学+分支)
给你两个非负整数 low 和 high。请你返回 low 和 high 之间(包括二者)奇数的数目。示例 1:输入:low = 3, high = 7输出:3解释:3 到 7 之间奇数数字为 [3,5,7]。示例 2:输入:low = 8, high = 10输出:1解释:8 到 10 之间奇数数字为 [9]。原创 2024-07-14 20:23:42 · 449 阅读 · 0 评论 -
【力扣 1491】去掉最低工资和最高工资后的工资平均值 C++题解(向量+排序)
给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。示例 1:输入:salary = [4000,3000,1000,2000]输出:2500.00000解释:最低工资和最高工资分别是 1000 和 4000。去掉最低工资和最高工资以后的平均工资是 (2000+3000)/2= 2500示例 2:输入:salary = [1000,2000,3000]原创 2024-07-14 20:08:09 · 362 阅读 · 0 评论 -
【力扣 58】最后一个单词的长度 C++题解(字符串)
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入:s = “Hello World”输出:5解释:最后一个单词是“World”,长度为5。示例 2:输入:s = " fly me to the moon "输出:4解释:最后一个单词是“moon”,长度为4。示例 3:输入:s = “luffy is still joyboy”原创 2024-07-11 08:03:19 · 602 阅读 · 0 评论 -
【力扣 73】矩阵置零 C++题解 空间复杂度为O(1)的解决方案(向量+循环+矩阵)
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0。请使用 原地 算法。原创 2024-07-11 08:03:08 · 694 阅读 · 0 评论 -
【力扣 682】棒球比赛 C++题解(模拟+分支+字符串)
你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则:整数 x - 表示本回合新获得分数 x“+” - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。“D” - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分数。原创 2024-07-10 13:33:23 · 711 阅读 · 0 评论 -
【力扣 709】转换成小写字母 C++题解(字符串)
给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。示例 1:输入:s = “Hello”输出:“hello”示例 2:输入:s = “here”输出:“here”示例 3:输入:s = “LOVELY”输出:“lovely”提示:s 由 ASCII 字符集中的可打印字符组成。原创 2024-07-10 13:33:03 · 773 阅读 · 0 评论 -
【力扣 657】机器人能否返回原点 C++题解(字符串+模拟+分支)
在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串 moves 表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。“R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。原创 2024-07-09 08:11:46 · 477 阅读 · 0 评论 -
【力扣 657】机器人能否返回原点 C++题解(字符串+模拟)
在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串 moves 表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。“R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。原创 2024-07-09 08:11:37 · 469 阅读 · 0 评论 -
【力扣 1041】困于环中的机器人 C++题解(数学+字符串+模拟)
在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。注意:北方向 是y轴的正方向。南方向 是y轴的负方向。东方向 是x轴的正方向。西方向 是x轴的负方向。机器人可以接受下列三条指令之一:“G”:直走 1 个单位“L”:左转 90 度“R”:右转 90 度机器人按顺序执行指令 instructions,并一直重复它们。只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false。示例 1:输入:instructions = “GGLLGG”原创 2024-07-07 09:18:49 · 791 阅读 · 0 评论 -
【力扣 1275】找出井字棋的获胜者 C++题解(位集合+位运算+模拟)
A 和 B 在一个 3 x 3 的网格上玩井字棋。井字棋游戏的规则如下:玩家轮流将棋子放在空方格 (" ") 上。第一个玩家 A 总是用 “X” 作为棋子,而第二个玩家 B 总是用 “O” 作为棋子。“X” 和 “O” 只能放在空方格中,而不能放在已经被占用的方格上。只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。如果所有方块都放满棋子(不为空),游戏也会结束。游戏结束后,棋子无法再进行任何移动。原创 2024-07-07 09:18:44 · 1107 阅读 · 0 评论 -
【力扣 1572】矩阵对角线元素的和 C++题解(向量+循环+矩阵)
给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。示例 1:输入:mat = [[1,2,3],[4,5,6],[7,8,9]]输出:25解释:对角线的和为:1 + 5 + 9 + 3 + 7 = 25请注意,元素 mat[1][1] = 5 只会被计算一次。示例 2:输入:mat = [[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]]输出:8。原创 2024-07-06 12:47:34 · 822 阅读 · 0 评论