
每日一练
文章平均质量分 69
每日一练
FriendshipT
学无止境!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法:二叉树专题
Python、数据结构与算法、栈、队列、二叉树、中序遍历、层次遍历原创 2023-03-04 22:49:58 · 814 阅读 · 0 评论 -
15翻转栈★★★★
15翻转栈★★★★题目描述(难度:中等)方法一:借助队列复杂度分析方法二:直接递归复杂度分析参考文献题目描述(难度:中等)翻转(也叫颠倒)栈的所有元素,例如输入栈{1, 2, 3, 4, 5},其中,1 处在栈顶,翻转之后的栈为{5, 4, 3, 2, 1},其中,5 处在栈顶。(来源:阿里)方法一:借助队列class Stack: # 模拟栈 def __init__(self): self.items = [] # 判断栈是否为空 def emp原创 2022-01-21 12:37:18 · 915 阅读 · 0 评论 -
14队列的实现★★★★
14队列的实现★★★★题目描述(难度:简单)方法一:数组实现(顺序存储)复杂度分析方法二:链表实现(链式存储)链表结点结构复杂度分析参考文献题目描述(难度:简单)实现一个队列的数据结构,使其具有入队列、出队列、查看队列首尾元素、查看队列大小等功能。(来源:新浪)队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,进行插入操作的端称为队尾,进行删除操作的端称为队头。方法一:数组实现(顺序存储)class Queue:原创 2022-01-17 12:53:28 · 746 阅读 · 0 评论 -
13栈的实现★★★★
13栈的实现★★★★题目描述(难度:中等)方法一:数组实现(顺序存储)复杂度分析方法二:链表实现(链式存储)链表结点结构复杂度分析参考文献题目描述(难度:中等)实现一个栈的数据结构,使其具有以下方法:压栈、弹栈、取栈顶元素、判断栈是否为空以及获取栈中元素个数。(来源:阿里)★注:压栈也叫入栈,弹栈也叫出栈。方法一:数组实现(顺序存储)class Stack: # 模拟栈 def __init__(self): self.items = [] # 判断栈是否原创 2022-01-16 20:35:31 · 568 阅读 · 0 评论 -
12展开链接列表★★★
12展开链接列表★★★题目描述(难度:较难)链表结点结构方法一复杂度分析主函数参考文献题目描述(难度:较难)给定一个有序链表,其中每个结点也表示一个有序链表,结点包含两个类型的指针:(1)指向主链表中下一个结点的指针(“right”指针)(2)指向此结点头的链表(“down”指针)所有链表都被排序。如下图所示:实现一个函数 flatten(),该函数用来将链表扁平化成单个链表,扁平化的链表也应该被排序。例如,对于上述输入链表,输出链表应为3->6->8->11->15-原创 2022-01-16 13:21:01 · 676 阅读 · 0 评论 -
11判断单链表是否有环★★★★★
11判断单链表是否有环★★★★★题目描述(难度:中等)单链表结构方法一:快慢指针复杂度分析主函数参考文献题目描述(难度:中等)单链表有环指的是单链表中某个结点的 next 域指向的是链表中在它之前的某一个结点,这样在链表的尾部形成一个环形结构。如何判断单链表是否有环存在?(来源:阿里)单链表结构class LNode: def __init__(self): self.data = None # 数据域 self.next = None # 指针域由于原创 2022-01-15 10:48:11 · 631 阅读 · 0 评论 -
10删除链表中指定结点★★★★
10删除链表中指定结点★★★★题目描述(难度:中等)单链表结构方法一复杂度分析主函数参考文献题目描述(难度:中等)假设给定链表 1->2->3->4->5->6->7 中指向第 5 个元素的指针,要求把结点 5 删掉,删除后链表变为 1->2->3->4->6->7。(来源:小米)单链表结构class LNode: def __init__(self): self.data = None # 数据域原创 2022-01-14 20:11:10 · 622 阅读 · 0 评论 -
09合并两个有序链表★★★★
09合并两个有序链表★★★★题目描述(难度:中等)单链表结构方法一复杂度分析主函数参考文献题目描述(难度:中等)已知两个链表 head1 和 head2 各自有序(例如升序排列),请把它们合并成一个链表,要求合并后的链表依然有序。(来源:阿里)单链表结构class LNode: def __init__(self): self.data = None # 数据域 self.next = None # 指针域由于单链表中每个结点的地址都存储在其前驱结点的原创 2022-01-14 10:48:47 · 178 阅读 · 0 评论 -
08把链表以 K 个结点为一组进行翻转★★★★
08把链表以 K 个结点为一组进行翻转★★★★题目描述(难度:中等)单链表结构方法一复杂度分析主函数参考文献题目描述(难度:中等)链表翻转是指把每 K 个相邻的结点看成一组进行翻转,如果剩余结点不足 K 个,则保持不变。假设给定链表 1->2->3->4->5->6->7 和一个数 K,如果 K 的值为 2,那么翻转后的链表为 2->1->4->3->6->5->7。如果 K 的值为 3,那么翻转后的链表为:3->2->原创 2022-01-13 19:09:44 · 464 阅读 · 0 评论 -
07把链表相邻元素翻转★★★★★
07把链表相邻元素翻转题目描述(难度:中等)单链表结构方法一:逆序复杂度分析主函数参考文献题目描述(难度:中等)把链表相邻元素翻转,例如给定链表为 1->2->3->4->5->6->7,则翻转后的链表变为2->1->4->3->6->5->7。单链表结构class LNode: def __init__(self): self.data = None # 数据域 self.next =原创 2022-01-10 20:21:59 · 859 阅读 · 0 评论 -
06找出单链表中的倒数第k个元素★★★★★
06找出单链表中的倒数第k个元素题目描述(难度:中等)单链表结构方法一:快慢指针复杂度分析主函数参考文献题目描述(难度:中等)找出单链表中的倒数第 k 个元素,例如给定单链表:1->2->3->4->5->6->7,则单链表的倒数第 k=3 个元素为 5。单链表结构class LNode: def __init__(self): self.data = None # 数据域 self.next = None # 指针域原创 2022-01-10 13:19:30 · 880 阅读 · 0 评论 -
05对链表进行重新排序★★★★
05对链表进行重新排序题目描述(难度:中等)单链表结构方法一复杂度分析主函数参考文献题目描述(难度:中等)给定链表 L0->L1->L2…Ln-1->Ln,把链表重新排序为 L0->Ln->L1->Ln-1->L2-> Ln-2…。要求:(1)在原来链表的基础上进行排序,即不能申请新的结点;(2)只能修改结点的 next 域,不能修改数据域。单链表结构class LNode: def __init__(self): sel原创 2022-01-08 13:47:07 · 1359 阅读 · 0 评论 -
04计算两个单链表所代表的数之和★★★★
04计算两个单链表所代表的数之和题目描述(难度:中等)单链表结构方法一:链表相加复杂度分析主函数参考文献题目描述(难度:中等)给定两个单链表,链表的每个结点代表一位数,计算两个数的和。例如:输入链表 (3->1->5)和链表(5->9->2) ,输出:8->0->8,即 513+295=808,注意个位数在链表头。单链表结构class LNode: def __init__(self): self.data = None # 数据域原创 2022-01-08 13:11:37 · 606 阅读 · 0 评论 -
03无序链表中移除重复项★★★★
03无序链表中移除重复项题目描述(难度:中等)单链表结构方法一复杂度分析主函数参考文献题目描述(难度:中等)给定一个没有排序的链表,去掉其重复项,并保留原顺序,例如链表 1->3->1->5->5->7,去掉重复项后变为 1->3->5->7。单链表结构class LNode: def __init__(self): self.data = None # 数据域 self.next = None # 指针域原创 2022-01-07 22:21:30 · 1637 阅读 · 0 评论 -
02链表的逆序★★★★
02链表的逆序题目描述单链表结构方法一方法二题目描述给定一个带头结点的单链表,请将其逆序。即如果单链表原来为head->1->2->3->4->5->6->7,那么逆序后变为head->7->6->5->4->3->2->1。单链表结构class LNode: def __new__(self,x): self.data=x # 数据域 self.next=None # 下一个原创 2022-01-07 00:01:37 · 994 阅读 · 0 评论 -
01两数之和
Leetcode之两数之和题目描述(难度:简单)方法一:暴力枚举法复杂度分析方法二:哈希表法复杂度分析题目描述(难度:简单)给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0原创 2022-01-02 00:38:37 · 151 阅读 · 5 评论