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