![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode刷题笔记
文章平均质量分 74
陌然。。
这个作者很懒,什么都没留下…
展开
-
【49. 字母异位词分组 中等】
时间复杂度:O(nklogk),其中 n 是 strs 中的字符串的数量,k 是 strs 中的字符串的的最大长度。需要遍历 n 个字符串,对于每个字符串,需要 O(klogk) 的时间进行排序以及 O(1) 的时间更新哈希表,因此总时间复杂度是 O(nklogk)。空间复杂度:O(nk),其中 n 是 strs 中的字符串的数量,k 是 strs 中的字符串的的最大长度。需要用哈希表存储全部字符串。原创 2024-08-22 11:31:51 · 364 阅读 · 0 评论 -
【242. 有效的字母异位词 简单】
时间复杂度 O(M+N) : 其 M , N 分别为字符串s和t长度。当 s和t无相同字符时,三轮循环的总迭代次数最多为 2M+2N ,使用 O(M+N) 线性时间。空间复杂度 O(1) : 由于字符种类是有限的(常量),一般 ASCII 码共包含 128 个字符,因此可假设使用 O(1) 大小的额外空间。原创 2024-08-19 23:09:23 · 402 阅读 · 0 评论 -
【142. 环形链表 II 中等】
时间复杂度 O(N) :第二次相遇中,慢指针须走步数 a原创 2024-08-18 22:24:50 · 1213 阅读 · 0 评论 -
【面试题 02.07. 链表相交 简单】
时间复杂度 O(a+b) : 最差情况下(即 ∣a−b∣=1 , c=0 ),此时需遍历 a+b 个节点。空间复杂度 O(1) : 节点指针 A , B 使用常数大小的额外空间。首先要理解题目中求两个链表交点节点的指针。交点不是数值相等,而是指针相等。两个链表长度不一致,难点在于A和B如何同时到达两个链表中的第一个公共节点。原创 2024-08-18 16:53:08 · 750 阅读 · 0 评论 -
【19. 删除链表的倒数第 N 个结点 中等】
时间复杂度: O(n)空间复杂度: O(1)首先涉及到添加或删除节点,需要考虑虚拟头节点,保证真实头节点和后续节点操作一致题目要求是倒数第n个节点,难点在于单链表指向是正向的,要如何正向找到倒数第n个节点。原创 2024-08-17 18:08:54 · 429 阅读 · 0 评论 -
【24. 两两交换链表中的节点 中等】
时间复杂度:O(n)空间复杂度:O(1)待操作节点≥2时才进入循环进行交换,交换时遵循三个步骤。为保证头节点操作与后续节点操作一致,引入虚拟头节点。原创 2024-08-15 22:52:09 · 333 阅读 · 0 评论 -
【206. 反转链表 简单】
首先将cur指向head,cur->next 节点用tmp指针保存一下,因为后续要将其赋值给cur。然后利用双指针法反转cur->next 的指向了,将cur->next 指向pre。直到cur==nullptr时循环结束,完成反转。原创 2024-08-15 20:13:51 · 386 阅读 · 0 评论 -
【707. 设计链表 中等】
时间复杂度: 涉及 index 的相关操作为 O(index), 其余为 O(1)空间复杂度: O(n)覆盖了链表的常见操作,是练习链表操作非常好的一道题目,要注意如何利用虚头节点。原创 2024-08-12 23:13:23 · 1113 阅读 · 0 评论 -
【203. 移除链表元素 简单】
时间复杂度: O(n)空间复杂度: O(1)在单链表中移除头结点和移除其他节点的操作方式不一样。可以设置一个虚拟头结点,这样原链表的所有节点就都可以按照统一的方式进行移除了。原创 2024-08-09 11:54:11 · 379 阅读 · 0 评论 -
【54. 螺旋矩阵 中等】
时间复杂度:O(mn),其中 m 和 n 分别是输入矩阵的行数和列数。矩阵中的每个元素都要被访问一次。空间复杂度:O(mn)。需要创建一个大小为 m×n 的矩阵 visited 记录每个位置是否被访问过。依旧是坚持循环不变量原则。终止条件是:判断若重新定义边界后,上下或者左右边界交错,表明螺旋矩阵遍历结束,跳出循环,返回答案。原创 2024-07-24 22:30:41 · 369 阅读 · 0 评论 -
【59. 螺旋矩阵 II 中等】
时间复杂度 O(n^2): 模拟遍历二维矩阵的时间空间复杂度 O(1)求解本题主要是坚持循环不变量原则,填入每一行或每一列的值时坚持左闭右开或左闭右闭原则。原创 2024-07-24 16:25:23 · 659 阅读 · 0 评论 -
【76. 最小覆盖子串 困难】
难点在于滑动窗口法的while条件如何确定,也就是s 是否涵盖 t所有字符bool is_covered(int cnt_s[], int cnt_t[])。原创 2024-07-22 21:48:14 · 546 阅读 · 0 评论 -
【904. 水果成篮】
时间复杂度:O(n),其中 n 是数组 fruits 的长度。空间复杂度:O(1)。哈希表中最多会有三个键值对,可以看成使用了常数级别的空间。这个题目可以翻译为寻找包含两种元素的最大子数组,返回其长度。原创 2024-07-22 19:22:26 · 461 阅读 · 0 评论 -
【209. 长度最小的子数组】
这道题目的精髓是窗口的起始位置如何移动:如果当前窗口的值大于等于s了,窗口就要向前移动了(也就是该缩小了)。原创 2024-07-21 22:12:32 · 616 阅读 · 0 评论 -
【977. 有序数组的平方】
时间复杂度:O(n)空间复杂度:O(1)。除了存储答案的数组以外,我们只需要维护常量空间。数组其实是有序的,数组平方的最大值就在数组的两端,考虑双指针法,i指向起始位置,j指向终止位置。定义一个新数组result,和A数组一样的大小,让k指向result数组终止位置,先将最大值塞入result最后一个,然后递减。原创 2024-07-08 23:21:34 · 436 阅读 · 0 评论 -
【844. 比较含退格的字符串】
时间复杂度:O(A+B+C),其中 A 和 B 分别为字符串 S 和 T 的长度,C代表处理后的字符串长度。我们需要遍历两字符串和处理后的字符串各一次。空间复杂度:O(1)。对于每个字符串,我们只需要定义一个指针和长度即可。首先要获取经过退格字符处理后的最终字符串s和字符串长度slowIndex。得到最终字符串后进行比较。原创 2024-07-07 22:55:51 · 388 阅读 · 0 评论 -
【26. 删除有序数组中的重复项】
时间复杂度:O(n),其中 n 是数组的长度。快指针和慢指针最多各移动 n 次。空间复杂度:O(1)。只需要使用常数的额外空间。数组中至少包含一个元素,在删除重复元素之后也至少剩下一个元素,因此 nums[0] 保持原状即可,从下标 1 开始删除重复元素。覆盖次数 + 1个首元素 = 新的nums长度。原创 2024-07-06 23:38:23 · 351 阅读 · 0 评论 -
【27. 移除元素】
时间复杂度:O(n)空间复杂度:O(1)通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。原创 2024-07-06 22:47:16 · 457 阅读 · 0 评论 -
【69. x 的平方根 】
时间复杂度:O(logx),即为二分查找需要的次数。空间复杂度:O(1)。比较中间元素 middle 的平方与 x 的大小关系,并通过比较的结果调整上下界的范围。原创 2024-07-06 21:38:00 · 510 阅读 · 0 评论 -
【34. 在排序数组中查找元素的第一个和最后一个位置】
时间复杂度: O(logn) ,其中 n 为数组的长度。二分查找的时间复杂度为 O(logn),一共会执行两次,因此总时间复杂度为 O(logn)。空间复杂度:O(1)。只需要常数空间存放若干变量。主要利用二分法查找target在数组范围中的左右边界,注意左右边界的查找条件。因为最后left == right + 1;,所以leftBorder = right;原创 2024-07-04 22:54:06 · 411 阅读 · 0 评论 -
【35. 搜索插入位置】
时间复杂度:O(log n)空间复杂度:O(1)采用二分法寻找target在nums中的下标,即middle,如果不在则返回left。原创 2024-07-01 23:12:48 · 935 阅读 · 0 评论 -
【704. 二分查找】
时间复杂度:O(log n)空间复杂度:O(1)注意:二分查找法要坚持循环不变量原则。原创 2024-06-30 16:48:05 · 511 阅读 · 0 评论