硬核的力扣刷题笔记
文章平均质量分 82
Leibnizzzzzz睡不醒
这个作者很懒,什么都没留下…
展开
-
N数之和(力扣 二三四数之和总结)
学习笔记六 N数之和题目分析本类题可分为两类,一种是利用哈希表直接进行查找,另一种是利用双指针进行双向查找。哈希表力扣01.两数之和力扣454.四数相加需要利用哈希表时的题目特征:1,多个数不来自于同一个数组,这样不需要考虑同一数组中重复选择数字的问题。2,如果数字是来自同一个数组,那么不超过两个。由于利用哈希表时是借助其键值对 key 的值进行查找,因此通常使用 target - nums[ i ] 的方式进行,这就限定了操作数只能有两个。双指针力扣15.三数之和力扣18.原创 2022-02-26 23:35:37 · 387 阅读 · 0 评论 -
KMP算法精讲(力扣28.实现strStr())
学习笔记三 KMP算法介绍本题来自:力扣28.实现strStr()##题目描述简单来说,题目要求是从一个字符串 haystack 中找到另一个字符串 needle 出现的第一个位置。如果按暴力解法,题目解答很容易想到是 O(m * n) 的时间复杂度。那么,有没有一种解法,它的时间复杂度可以降到 O(m + n) 呢?有!这就是我们接下来要介绍的 KMP 算法##KMP的主要思想**KMP的主要思想是:**当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,避免从头再去做匹配了。这也原创 2022-02-26 09:37:26 · 158 阅读 · 0 评论 -
KMP算法应用(力扣459.重复的子字符串)
#学习笔记四 KMP算法应用本题来自:力扣459.重复的子字符串##题目描述给定一个非空的字符串 s ,判断 s 是否能通过它的一个子串重复多次获得。这时候肯定有同学会问了,连要比较的短串是什么都不知道,怎么用KMP呢?##编程思路还是和 KMP算法实现过程一样,我们需要一个 next 数组来记录目前的最长前后缀。以一个简单例子入手:abcabcabc可以发现,该字符串的最长前后缀是 abcabc,而该字符串减去这个最长前后缀正好就是循环的子字符串。这究竟是不是巧合?我们发现,如果原创 2022-02-26 09:38:14 · 254 阅读 · 0 评论 -
螺旋矩阵旋起来 (力扣59.螺旋矩阵2解析)
螺旋矩阵旋起来本题来自:力扣59.螺旋矩阵2.题目解读螺旋矩阵问题是面试常考问题之一,通过编程来模拟过程可以有效检验出应试者对代码的掌控能力,以及对边界条件的清晰认识。对于这个问题,切记不要一上来就沉浸于代码中。事实上,这道题只要理清了思路,每一部分的代码写起来是大同小异的。下面来看具体思路:思路一:模拟一个完整的loop一个完整的圈由四条边组成,那么处理相邻两条边的交点便是关键,到底应该将交点分配给哪一条边呢?无论是左开右闭还是左闭右开都是可以的,只要选择使用一种即可。很多同学没有想原创 2022-02-22 16:04:15 · 130 阅读 · 0 评论 -
深入理解二分法(力扣704.二分查找)
小何的学习笔记一 深入理解二分法文章目录小何的学习笔记一 深入理解二分法二分法的使用前提二分法的两种区间定义一、左闭右闭区间二、左闭右开区间二分法的使用前提二分法是进行查找最基础的方法。由于实现方法是使用 left,right 两个指针,每次将搜索区间缩小一半,因此它是一种时间复杂度为 O(logn) 的方法。在使用二分法时,一定要注意以下几点:数组应该是分段有序的,这样有利于缩小搜索区间。如果数组中存在重复元素,那么二分法返回的下标便不是唯一的,根据区间的不同定义可以返回下标的左界和右界。原创 2022-02-21 10:45:27 · 393 阅读 · 0 评论 -
反转链表有学问(递归,循环多方法总结)
学习笔记五 反转链表本题来自:力扣206. 反转链表题目描述对于一个如图所示的链表,将其翻转过来。注意,要在原链表身上进行操作,不能新建链表。方法一:循环第一种思路是最容易想到的,我们只需要两两交换相邻的节点指向,从头遍历到尾即可。首先考虑特殊情况,在链表内没有节点时,或者只有一个节点时不需要反转。if (head == nullptr || head->next == nullptr) return head;先定义一个 cur 指针,指向头结点,cur 是我们要操作的中心原创 2022-02-26 23:34:51 · 496 阅读 · 0 评论