收录一些leetcode刷到的题,根据解题思路来分类了,也是当作帮自己归纳总结吧。
持续刷题,日日刷,日日新,日日精~加油💪坚持!
双指针:左右指针、快慢指针
滑动窗口:窗口一侧找条件满足,另一侧移动为最优解
滑动窗口的套路:
先找到一个可行解,再优化这个可行解。
优化到不能优化,产生出一个可能的最优解。
重复一二步
……
在所有可能的最优解中,比较出最优解。
串联所有单词的子串 此题略有不同:固定窗口满足条件的长度,找出所有解,极易超时,最后用map优化array数据记录
贪心算法(与滑动窗口有异曲同工之妙)
数组
矩阵(四个方向的处理,切割分块处理)
栈
有效的括号(不借助栈也可以原地处理)
简化路径(学会归纳场景很重要)
最长连续序列(既可以用数组,也可以练哈希表)
矩阵置零 (有点意思,可以看看官方题解,如何有效利用空间,主要优化点在于空间复杂度)
生命游戏 (用额外的状态去标记记录,优化空间复杂度)
基本计算器(用栈存起标识符+-)
哈希表 new Map()
存在重复元素 II (保留最近一次的记录)
两数之和 (使用map类型优化findIndex方法,挺巧妙的一种用法)
字母异位词分组(上强度了)
随机链表的复制 (哈希表解决链表复制的一种方式)
动态规划:拆分为n个相似的小问题
链表
环形链表(快慢指针)
合并两个有序链表(递归 / 迭代)
树(重点):DFS/BFS