- 博客(19)
- 收藏
- 关注
原创 栈与队的互相实现
栈的特点是后进先出,队的特点是先进先出。今天我们学习的内容是用栈实现队和用队实现栈。请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(一、LeetCode232.用栈实现队列。思路:题目给了我们两个栈使用,我们。232. 用栈实现队列。
2023-10-19 21:01:59
67
1
原创 算法通关村—最小栈问题解析
对于栈来说,如果一个元素 a 在入栈时,栈里有其它的元素 b, c, d,那么无论这个栈在之后经历了什么操作,只要 a 在栈中,b, c, d 就一定在栈中,因为在 a 被弹出之前,b, c, d 不会被弹出。因此,在操作过程中的任意一个时刻,只要栈顶的元素是 a,那么我们就可以确定栈里面现在的元素一定是 a, b, c, d。当一个元素要入栈时,我们取当前辅助栈的栈顶存储的最小值,与当前元素比较得出最小值,将这个最小值插入辅助栈中;在任意一个时刻,栈内元素的最小值就存储在辅助栈的栈顶元素中。
2023-10-17 14:51:30
63
原创 栈——括号比配问题
LeetCode20. 有效的括号https://leetcode.cn/problems/valid-parentheses/给定一个只包括 ,,,,, 的字符串 ,判断字符串是否有效。有效字符串需满足:示例 1: 输入:s = "()" 输出:true 示例 2: 输入:s = "()[]{}" 输出:true 示例 3: 输入:s = "(]" 输出:false 解题思路:我这里直接画一个流程图应该会更好理解一点~代码如下: 这题标着简单,但是我感觉挺难的...
2023-10-09 15:25:17
84
1
原创 算法通关村—如何基于链表实现栈
● peek():显示栈顶元素,但是不出栈。告别了链表与数组,我们来到栈的学习。● push(E):增加一个元素E。● empty():判断栈是否为空。● pop():弹出元素E。接下来我们用链表来实现栈。
2023-10-09 13:18:11
69
1
原创 数组轮转、区间、字符串替换空格问题
这一期我们把数组剩余的几个问题一并解决,之后我还会出一期数组复盘。剩余的问题:1. 数组轮转问题2. 数组区间问题3.字符串替换空格问题LeetCode189. 轮转数组。
2023-10-08 19:42:48
41
2
原创 双指针专题
在数组里用到双指针的思想, 可以简单有效的解决很多问题,实际上双指针只不过是两个变量而已。在链表中同样可以使用双指针来轻松解决一部分算法问题。
2023-09-22 21:09:17
67
原创 《算法通关村第一关——链表经典问题之LeetCode刷题笔记》
做这题,刚开始我就在想各种数据结构,得到的一种思路是这个链表元素,一份压入栈中,一份压入队中,分别出栈,出队,比较两者元素值。根据链表节点的值大小,递归地将两个链表中较小节点连接在一起,形成新的有序链表。递归方法用的很巧妙,以我自己的理解是节点的迭代恰好与递归的特性相符,可惜现阶段对递归的理解的=还没有很透彻...两个链表的头结点都是已知的,相交之后成为一个单链表,但是相交的位置未知,并且相交之前的结点数也是未知的,LeetCode234,这也是一道简单,但是很经典的链表题,判断一个链表是否为回文链表。
2023-09-21 17:28:22
140
1
原创 算法通关村第一关——链表青铜挑战记
在这段算法代码中,我们用到了 C 语言的 malloc 函数,它的作用就是生成一个新的节点,其类型与 ListNode 是一样的,其本质就是在内存中找了一小块空地,准备用来存放数据 val 的 temp 和 a 节点。它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。该代码片段的作用是定义了一个链表结点的结构,你可以使用这个结构来创建链表,举个算法村里的例子,我们创建一个值为 0 1 2 3 4 的链表。在《大话数据结构》上作者讲的很通俗,原话是这么讲的。接下来,我们就来创建链表。
2023-09-19 18:25:44
31
原创 递归输出图形类的笔记
说明:参数 number 为重复次数,symbol 为显示字符。函数将在屏幕上重复显示 number 个 symbol 字符。若 number ≤ 0,则不输出。请编写递归函数,重复显示字符。
2022-08-15 19:16:14
560
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人