算法框架模板
2021-12-21 04:29:45 2 举报
AI智能生成
登录查看完整内容
面试必刷题,本人通过此模板找到多个大厂offer
作者其他创作
大纲/内容
https://leetcode-cn.com/problems/invert-binary-tree/
preorder
BFS
思路(这里需要掌握的是先序遍历)
模板
226. 翻转二叉树
https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node/
BFS
思路
116. 填充每个节点的下一个右侧节点指针
https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list/
递归过程
postorder
114. 二叉树展开为链表
二叉树刷题第一期
https://leetcode-cn.com/problems/maximum-binary-tree/
子主题
654. 最大二叉树
https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/
图解思路
非递归实现
105. 从前序与中序遍历序列构造二叉树
https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/
h4 data-cypress=\"QuestionTitle\" class=\"css-10c1h40-Title eugt34i1\" style=\
二叉树刷题第二期
https://leetcode-cn.com/problems/find-duplicate-subtrees/
652. 寻找重复的子树
二叉树刷题第三期
二叉搜索树刷题第一期
树(刷题的基础)
https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof/
dp table自底向上
memo(不推荐)自顶向下
空间压缩
好看
https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/
类似问题
斐波那契额数列
https://leetcode-cn.com/problems/coin-change/
利于初学这看的代码
优化后
https://leetcode-cn.com/problems/coin-change-2/
类似的问题:
找零钱问题
总结模板
动态规划
https://leetcode-cn.com/problems/permutations/
https://leetcode-cn.com/problems/permutations-ii/
全排列问题
https://leetcode-cn.com/problems/n-queens/
https://leetcode-cn.com/problems/n-queens-ii/
N皇后问题
回溯算法
算法框架
https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/
BFS推荐使用BFS
DFS
分治
二叉树的最小高度
https://leetcode-cn.com/problems/open-the-lock/
解开密码锁的最少次数
https://leetcode-cn.com/problems/binary-tree-level-order-traversal/
https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/
https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/
https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/
练习题目(二叉树的层序遍历)
https://leetcode-cn.com/problems/linked-list-cycle/
https://leetcode-cn.com/problems/linked-list-cycle-ii/
https://leetcode-cn.com/problems/middle-of-the-linked-list/
https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/
类似题目
快、慢指针
https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/
https://leetcode-cn.com/problems/container-with-most-water/
前面那个双指针的命名不容易理解,这样命名更容易理解
https://leetcode-cn.com/problems/sort-colors/
左、右指针
双指针
寻找一个数
寻找左测边界的二分搜索
寻找右侧边界的二分搜索
同一模板
口诀:二分查找随便写,左侧边界while右,补丁左;右侧边界while左,补丁右
二分查找
模板框架
https://leetcode-cn.com/problems/minimum-window-substring/
最小覆盖字串
https://leetcode-cn.com/problems/permutation-in-string/
字符串排列
https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/
找所有字母异位词
https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
最长无重复子串
滑动窗口
核心套路模板
https://leetcode-cn.com/problems/longest-increasing-subsequence/
思路(重点)常规DP
思路(P100)二分查找
动态规划的设计:最长递增子序列
https://leetcode-cn.com/problems/russian-doll-envelopes/
二维递增子序列:信封嵌套问题
https://leetcode-cn.com/problems/maximum-subarray/
思路常规思路
思路空间压缩
最大子数组问题
https://leetcode-cn.com/problems/longest-common-subsequence/
经典动态规划:最长公共子序列
https://leetcode-cn.com/problems/edit-distance/
还有优化思路(P129)
经典动态规划:编辑距离
https://leetcode-cn.com/problems/longest-palindromic-subsequence/
思路常规DP
子序列问题解题模板:最长回文子序列
https://leetcode-cn.com/problems/minimum-insertion-steps-to-make-a-string-palindrome/
以最小插入次数构造回文串
https://leetcode-cn.com/problems/regular-expression-matching/
思路正常思路
思路消除重复子问题(DP)(奇妙的思想)
动态规划之正则表达式
https://www.lintcode.com/problem/867/
不同定义产生不同的解法
xxx
子串:连续的一串数字/字符。比如{5,6,8,9,4,0,15,4,7}中最长递增子串{5,6,8,9},即使15在后面比9大也不能算
子序列:一串数组/字符(可以是不连续的)。比如{5,6,8,9,4,0,15,4,7}中最长递增子串{5,6,8,9,15}
子数组:基本和子串是一个意思,只不过子串是字符串,子数组是一个数组(对应的题牛客:最长不重复子数组)
常规知识
动态规划系列
https://leetcode-cn.com/problems/lru-cache/
图解leetcode
LRU缓存淘汰策略
手写LFU算法
https://leetcode-cn.com/problems/same-tree/
代码
100. 相同的树
https://leetcode-cn.com/problems/validate-binary-search-tree/
其它思路
98. 验证二叉搜索树(leetcode)
https://leetcode-cn.com/problems/search-in-a-binary-search-tree/
代码:二叉树通用(就直接傻搜)
代码:BST
700. 二叉搜索树中的搜索
https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/
701. 二叉搜索树中的插入操作
https://leetcode-cn.com/problems/delete-node-in-a-bst/
450. 删除二叉搜索树中的节点
总结:BST模板
二叉搜索树操作锦集
概念介绍
https://leetcode-cn.com/problems/count-complete-tree-nodes/submissions/
代码:普通二叉树(最菜)
代码:满二叉树
代码:完全二叉树做法
222. 完全二叉树的节点个数
完全二叉树的节点数为什么那么难算
https://leetcode-cn.com/problems/serialize-and-deserialize-binary-tree/
代码:先序遍历
代码:后续遍历
代码:层序遍历(记不住)
代码:中序遍历
297. 二叉树的序列化与反序列化
各种遍历框架序列化和反序列化二叉树
https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/
代码后续遍历
236. 二叉树的最近公共祖先(leetcode)
https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/
235. 二叉搜索树的最近公共祖先(leetcode)
Git原理之二叉搜索树
特殊的数据结构:单调栈
特殊的数据结构:单调队列
https://leetcode-cn.com/problems/palindrome-linked-list/submissions/
代码先将链表的每个节点都入栈,在出栈和原链表进行判断(这里的栈用的递归栈)
代码先使用快慢指针找到链表的中间节点,再将后半段链表翻转和前半段进行判断最优
234. 回文链表
如何判断回文链表
https://leetcode-cn.com/problems/reverse-linked-list/
代码递归模板
代码迭代
代码利用栈
206. 反转链表
https://leetcode-cn.com/problems/reverse-linked-list-ii/
92. 反转链表 II
秀操作之递归翻转链表
https://leetcode-cn.com/problems/reverse-nodes-in-k-group/
25. K 个一组翻转链表
秀操作之K个一组翻转链表
数据结构系列
https://leetcode-cn.com/problems/subsets/
78. 子集
https://leetcode-cn.com/problems/subsets-ii/
90. 子集 II
https://leetcode-cn.com/problems/combinations/
77. 组合
https://leetcode-cn.com/problems/combination-sum/
39. 组合总和
https://leetcode-cn.com/problems/combination-sum-ii/
https://leetcode-cn.com/problems/combination-sum-iii/
216. 组合总和 III
https://leetcode-cn.com/problems/combination-sum-iv/
代码回溯法:leetcode超时
代码动态规划(找零钱问题变种)
377. 组合总和 Ⅳ
代码回溯
代码回溯+交换
46. 全排列
47. 全排列 II
例题是78、77、46,其它都是练习题
小结
回溯算法解决子集、排列、组合问题
https://leetcode-cn.com/problems/sudoku-solver/
37. 解数独
https://leetcode-cn.com/problems/valid-sudoku/
36. 有效的数独
回溯算法的最佳实践:解数独
https://leetcode-cn.com/problems/generate-parentheses/
回溯算法最佳实践:括号生成
BFS算法暴力各种智力题
https://leetcode-cn.com/problems/two-sum/
双重for_loop代码时间复杂度O(N ^ 2)
HashMap代码时间复杂度O(N)
双指针思想代码(leetcode是不能执行的,因为这个题需要返回的是下标)总结套路模板这个题不能使用双指针,因为需要返回下标,而双指针使用的前提条件必须对双指针进行排序
2Sum问题的核心思想
https://leetcode-cn.com/problems/3sum/
代码n数之和模板
15. 三数之和
https://leetcode-cn.com/problems/4sum/
代码(练习 + 理解度)刷代码的熟练度,直接写这个
代码(面试)n数之和模板
18. 四数之和
n数之和
一个函数解决nSum问题
拆解复杂问题:实现计算器
https://leetcode-cn.com/problems/pancake-sorting/
969. 煎饼排序
摊烧饼也得有点递归思想
https://leetcode-cn.com/problems/subarray-sum-equals-k/
代码优化优化思路:类似两数之和的HashMap做法
前缀和技巧:主要用于处理数组区间问题。比如:查询某个分数段的认数或百分比
前缀和技巧解决子数组问题
https://leetcode-cn.com/problems/flatten-nested-list-iterator/
341. 扁平化嵌套列表迭代器
扁平化嵌套列表(未做)
算法思维系列
https://leetcode-cn.com/problems/count-primes/
代码时间复杂度:O(N ^ 2)
代码:(leetcode超时)时间复杂度:O(N * sqrt(num))
高效求解代码第一版
高效求解代码第二版
204. 计数质数
如何高效的寻找素数
https://leetcode-cn.com/problems/super-pow/
代码小心溢出
优化了一点的代码
372. 超级次方
https://leetcode-cn.com/problems/powx-n/
如何高效进行模幂运算
https://leetcode-cn.com/problems/koko-eating-bananas/
代码(leetcode会超时)
优化代码二分搜索
https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/
1011. 在 D 天内送达包裹的能力
如何运用二分搜索
https://leetcode-cn.com/problems/trapping-rain-water/
代码暴力法时间复杂度:O(N ^ 2)空间复杂度:O(1)
代码备忘录法时间复杂度:O(N)空间复杂度:O(N)
代码双指针时间复杂度:O(N)空间复杂度:O(1)
42. 接雨水
https://leetcode-cn.com/problems/trapping-rain-water-ii/
407. 接雨水 II(不会)
如何高效解决接雨水问题
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
26. 删除有序数组中的重复项
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/
代码(这个不是leetcode的题解)
代码虚拟头节点,直接遍历
82. 删除排序链表中的重复元素 II
如何去除有序数组的重复元素
https://leetcode-cn.com/problems/longest-palindromic-substring/
5. 最长回文子串
如何寻找最长回文子串
https://leetcode-cn.com/problems/jump-game/
55. 跳跃游戏
https://leetcode-cn.com/problems/jump-game-ii/
代码动态规划(备忘录法)
代码贪心思想
45. 跳跃游戏 II
如何运用贪心思想玩跳跃游戏
找出这些区间中最多有几个互不相交
区间调度(leecode没有)
https://leetcode-cn.com/problems/non-overlapping-intervals/
https://leetcode-cn.com/problems/minimum-number-of-arrows-to-burst-balloons/
452. 用最少数量的箭引爆气球
如何运用贪心做时间管理
https://leetcode-cn.com/problems/valid-parentheses/
20. 有效的括号
如何判定括号合法性
如何调度考生的座位
Union-Find算法详解
Union-Find算法应用
https://leetcode-cn.com/problems/nim-game/
292. Nim 游戏
https://leetcode-cn.com/problems/stone-game/
877. 石子游戏
https://leetcode-cn.com/problems/bulb-switcher/
319. 灯泡开关
一行代码就能解决的算法题
高频面试系列
股票问题
公众号补充
要知道进入下层决策的是for(int i = ?; i < nums.length; i++)循环中的i
尽量使用ArrayList,效率高。如果需要适用track.contains()方法就是用LinkedList
适用剪枝优化时要判断数组是否需要排序
模板1
模板2(排序)
判断情况的写(什么情况都正确)
快速写法(在一定情况下是错误的,比如负数与正数在比较,全正数或全负数是正确的)
排序算法的比较器
string.split(String str):将string字符串按照str进行分割
String和Integer的常用方法
算法小技巧
算法模板框架
0 条评论
回复 删除
下一页