Leetcode刷题笔记
文章平均质量分 96
记录在leetcode刷题过程中收获的知识与感悟
唉嗳君
小白一枚
展开
-
【力扣探索】队列和栈
概述对元素的处理有时候需要限定处理的顺序,这时候传统的数组和链表就无法满足了。两种不同的处理顺序:先入先出和后入先出两个相应的线性数据结构:队列和栈队列:先入先出的数据结构简介在 FIFO 数据结构中,将首先处理添加到队列中的第一个元素。队列是典型的 FIFO 数据结构。插入(insert)操作也称作入队(enqueue),新元素始终被添加在队列的末尾。 删除(delete)操作也被称为出队(dequeue)。 你只能移除第一个元素。实现动态数组+起始索引标记,实现简单,当开始标记移原创 2021-01-11 17:05:28 · 258 阅读 · 0 评论 -
【力扣探索】链表——双链表
双链表的不同与单链表唯一不同的地方在于结构体中增加了指向前一节点的prev指针操作简介可以与单链表相同的方式访问数据:非常量级时间访问随机位置。从头部遍历获得目标结点。在最坏的情况下,时间复杂度将是 O(N)。与单链表的相似之处它们都无法在常量时间内随机访问数据。它们都能够在 O(1) 时间内在给定结点之后或列表开头添加一个新结点。它们都能够在 O(1) 时间内删除第一个结点。但是删除给定结点(包括最后一个结点)时略有不同在单链表中,它无法获取给定结点的前一个结点,因此在删原创 2020-12-30 13:32:41 · 202 阅读 · 0 评论 -
【力扣探索】链表——经典问题
反转链表练习1. 反转链表题目链接: 206.反转链表解题思路:迭代,时间复杂度O(n),空间复杂度O(1)递归,时间复杂度O(n),空间复杂度O(n),由于使用递归,将会使用隐式栈空间。递归深度可能会达到 n 层双指针,时间复杂度O(n),空间复杂度O(1)建议食用题解中某大佬的思路展示,图文结合非常清晰here代码://迭代版本,时间复杂度O(n),空间复杂度O(1)class Solution {public: ListNode* reverseList(ListN原创 2020-12-30 09:46:36 · 221 阅读 · 0 评论 -
【力扣探索】链表——双指针技巧
链表的双指针技巧经典环绕问题问题:给定一个链表,判断其中有无环链表中使用两个速度不同的指针时会遇到的情况:如果没有环,快指针将停在链表的末尾。如果有环,快指针最终将与慢指针相遇两个指针的速度应该如何设置?安全的选择是每次移动慢指针一步,而移动快指针两步。每一次迭代,快速指针将额外移动一步。如果环的长度为 M,经过 M 次迭代后,快指针肯定会多绕环一周,并赶上慢指针。其他选择?有用吗? 会更高效么?练习1. 环形链表题目链接: 141. 环形链表.解题思路:快慢指针,原则上原创 2020-12-29 09:52:48 · 295 阅读 · 0 评论 -
【力扣探索】数组和字符串——数组
数组数组、集合、列表集合:由一个或多个元素所构成的整体,其特性在于元素类型不一定相同,其中的元素没有顺序。事实上,这样的集合并不直接存在于编程语言中。然而,实际编程语言中的很多数据结构,就是在集合的基础上添加了一些规则形成的。列表:数据项构成的有限序列,即按照一定的线性顺序,排列而成的数据项的集合。它具有顺序,且长度是可变的。在编程语言中,常见的列表形式有数组和链表,栈和队列是两种特殊的列表。数组:列表没有索引,数组有索引。数组在内存中连续存储,列表不一定(例如链表)数组常见操作读取元素:时间复原创 2020-12-28 11:26:19 · 226 阅读 · 0 评论