LeetCode刷题笔记

(Since 2020.10.14-2021.3.10)

LeetCode刷题笔记,共两百多题,记录整理如下:

动态规划

  • 1 q5最长回文子串 - 动态规划法 - 中心扩散法 参考:动态规划、中心扩散、Manacher 算法

  • 2 q1143最长公共子序列 - 动态规划法 参考:视频图解 动态规划 最长公共子序列

  • 3 q53最大子序和 - 动态规划法 - 贪心算法 参考:最大子序和

  • 4 q300最长上升子序列 -动态规划法 参考:最长上升子序列(动态规划 + 二分查找,清晰图解)

  • 5 q120三角形最小路径和 -动态规划法

  • 6 q152乘积最大子数组 -动态规划法 参考:DP方法详解

  • 7 q121买卖股票的最佳时机 -动态规划法

  • 8 q122买卖股票的最佳时机 II -动态规划法 参考: 暴力搜索、贪心算法、动态规划

  • 9 q123买卖股票的最佳时机 III -动态规划法 参考:通俗易懂的动态规划解法

  • 10 q70爬楼梯 -动态规划法

  • 11 q746使用最小花费爬楼梯 -动态规划法

  • 12 q64最小路径和 -动态规划法

  • 13 小兔的棋盘 -动态规划法

  • 14 q309最佳买卖股票时机含冷冻期 -动态规划法

  • 15 q714买卖股票的最佳时机含手续费 -动态规划法

  • 16 q118杨辉三角 -动态规划

  • 17 q62不同路径 -动态规划法

  • 18 q139单词拆分 -动态规划法 -递归法

  • 19 q392判断子序列 -暴力解法

  • 20 q300最长上升子序列 -双循环 -DP

  • 21 q322零钱兑换 -dp法

  • 22 q198打家劫舍 -dp法

  • 23 q132. 分割回文串 II -双动态规划法

  • 24 q494. 目标和 -dp法

回溯

  • 1 q39组合总和 -解法 -参考:97%速度,很简明的思路

  • 2 q46全排列 -解法 -参考:回溯算法入门级详解 + 练习(持续更新)

  • 3 q47全排列II -解法

  • 4 q40组合总和 II -解法

  • 5 216. 组合总和 III -解法

  • 6 q78子集 -从下往上回溯 -参考题解:回溯算法

  • 7 q90子集 II -从下往山回溯

  • 8 q131. 分割回文串 -回溯法

滑动窗口

  • 1 q283 移动零 -解法

  • 2 剑指 Offer 42 连续子数组的最大和 -单循环遍历

  • 3 剑指 Offer 57 - II. 和为s的连续正数序列 -暴力枚举法 -函数解析法 -滑动窗口法 - 参考题解和为s的连续正数序列

  • 4 q159. 至多包含两个不同字符的最长子串 -滑动窗口

  • 5 q340. 至多包含 K 个不同字符的最长子串 -滑动窗口法

  • 6 q1004. 最大连续1的个数 III -滑动窗口法

  • 7 q424. 替换后的最长重复字符 -滑动窗口法

  • 8 q567. 字符串的排列 -暴力法 -滑动窗口法

  • 9 1100. 长度为 K 的无重复字符子串 -滑动窗口法

  • 10 1438. 绝对差不超过限制的最长连续子数组 -滑动窗口超时间 -滑动窗口法

  • 11 480. 滑动窗口中位数 -sortedlist+滑动窗口

  • 12 239. 滑动窗口最大值 -偷懒解法滑动窗口+sortedlist

  • 13 978. 最长湍流子数组 -滑动窗口法

  • 14 1151. 最少交换次数来组合所有的 1 -滑动窗口法

  • 15 1052. 爱生气的书店老板 -滑动窗口法

  • 16 1658. 将 x 减到 0 的最小操作数 -滑动窗口

  • 17 395. 至少有 K 个重复字符的最长子串 -暴力法+Counter -滑动窗口超时 -滑动窗口法 -分治法 -参考题解:至少有K个重复字符的最长子串

  • 18 *718. 最长重复子数组 -动态规划法 -滑动窗口法 -二分查找法

哈希相关

  • 1 q1两数之和 -解法

  • 2 q387字符串中的第一个唯一字符 -解法

  • 3 q242有效的字母异位词 -hash法

  • 4 q290单词规律 -解法

  • 5 q560. 和为K的子数组 -hash+前缀和

  • 6 q523. 连续的子数组和 -hash+前缀和

  • 7 q974. 和可被 K 整除的子数组 -hash+前缀和

二叉搜索树

  • 1 q450删除二叉搜索树中的节点 -递归法

  • 2 q701二叉搜索树中的插入操作 -解法

  • 3 q98验证二叉搜索树 -解法

双指针法

  • 1 q26删除排序数组中的重复项 -双指针法

  • 2 q209长度最小的子数组 -双指针法

  • 3 q42接雨水 -按行求解 -按列求解 -动态规划法 -栈解法 参考:详细通俗的思路分析,多解法

  • 4 q76最小覆盖子串 -双指针法

  • 5 面试题 10.01. 合并排序的数组 -逆向双指针法

  • 6 q344反转字符串 -双指针法

  • 7 q487最大连续1的个数II -双指针法

  • 8 q845数组中的最长山脉 -双指针法

  • 9 q15三数之和 -排序剪枝双指针法 参考:排序 + 双指针,逐行解释

  • 10 q16最接近的三数之和 -双指针加排序

  • 11 q259较小的三数之和 -双指针加排序

  • 12 q713乘积小于K的子数组 -*优雅的双指针 -我的题解 参考:乘积小于K的子数组

  • 13 q345反转字符串中的元音字母 -首尾双指针

  • 14 q349两个数组的交集 -排序双指针

  • 15 q922按奇偶排序数组 II -解法

  • 16 q88 合并两个有序数组 -解法

  • 17 q1099. 小于 K 的两数之和 -暴力枚举法 -双指针法 - 参考题解:图解「小于 K 的两数之和」

贪心算法

  • 1 q1024视频拼接 -贪心法 -DP法

  • 2 q861翻转矩阵后的得分 -贪心解法

二分查找

  • 1 LCP18早餐组合 -线性复杂度解法 -排序加二分查找

  • 2 q34在排序数组中查找元素的第一个和最后一个位置 -二分查找

  • 3 剑指 Offer 53 - I. 在排序数组中查找数字 I -二分查找 -*参考题解:面试题53 - I. 在排序数组中查找数字 I(二分法,清晰图解)

  • 4 1150. 检查一个数是否在数组中占绝大多数 -二分查找

  • 5 704. 二分查找 -二分查找 -参考题解:二分查找

  • 6 540. 有序数组中的单一元素 -异或法 -二分查找法

  • 7 275. H 指数 II -二分法

  • 8 852. 山脉数组的峰顶索引 -二分查找法

树相关

  • 1 q144二叉树的前序遍历 -解法

  • 2 q129求根到叶子节点数字之和 -递归法

  • 3 q104二叉树的最大深度 -递归法

  • 4 q662二叉树最大宽度 -层次遍历

  • 5 q102二叉树的层序遍历 -层次遍历

  • 6 q145二叉树的后序遍历 -递归法

  • 7 q94二叉树的中序遍历 -递归法

  • 8 q110平衡二叉树 -递归法

  • 9 q107二叉树的层次遍历II -层次遍历

  • 10 q103二叉树的锯齿形层次遍历 -BFS

  • 11 q637二叉树的层平均值 -BFS

  • 12 q111二叉树的最小深度 -递归法

  • 13 q113路径总和II -递归法 -巧妙递归,不用复制路径

  • 14 q437路径总和 III -丑陋解法 -巧妙递归

  • 15 q1026节点与其祖先之间的最大差值 -递归法

  • 16 q814二叉树剪枝 -优雅的递归,mark

  • 17 q543二叉树的直径 -递归

  • 18 q226翻转二叉树 -解法

  • 19 q101对称二叉树 -递归法

  • 20 q617合并两个二叉树 -解法

数学相关

  • 1 q1356根据数字二进制下 1 的数目排序 -解法

  • 2 q1643第 K 条最小指令 -优先确定最高位 参考:*第 K 条最小指令

  • 3 q258各位相加 -解法

  • 4 q1262可被三整除的最大和 -解法 -我的题解

  • 5 q136只出现一次的数字 -排序法 -异或法

  • 6 q448找到所有数组中消失的数字 -排序 -集合set -原地修改,秒 参考:找到所有数组中消失的数字

  • 7 q461汉明距离 -转二进制+异或 -一行代码

  • 8 q204计数质数 -厄拉多塞筛法 -参考题解:计数质数(暴力法及优化、筛法及优化与思路详解)

  • 9 q633 平方数之和 -解法 -参考题解:平方数之和

  • 10 剑指 Offer 03. 数组中重复的数字 -解法

  • 11 剑指 Offer 14- I. 剪绳子 -投机取巧归纳法 -参考:计算法

快慢指针

  • 1 q287寻找重复数 -题解 参考*前端灵魂画师图解快慢指针

  • 2 q141环形链表 -快慢指针法

  • 3 q142环形链表 II -快慢指针法

  • 4 q19删除链表的倒数第N个节点 -快慢指针法

  • 5 q202快乐数 -快慢指针法

  • 6 q876链表的中间结点 -快慢指针法

链表

  • 1 剑指 Offer 25. 合并两个排序的链表 -解法

  • 2 q206反转链表 -解法

  • 3 q234回文链表 -解法

  • 4 q146LRU缓存机制 -字典加链表

  • 5 q21合并两个有序链表 -解法

  • 6 剑指 Offer 22. 链表中倒数第k个节点 -快慢指针

  • 1 q973最接近原点的 K 个点 -暴力解法

  • 1 q946验证栈序列 -解法

  • 2 q20有效的括号 -解法

  • 3 q224基本计算器 -解法

  • 4 q739每日温度 -暴力法超时 -栈的解法 -题解

  • 5 q394字符串解码 -解法

  • 6 q456 132模式 -暴力法 -stack

  • 7 q1190反转每对括号间的子串 -解法

  • 8 q856. 括号的分数 -丑陋的写法

  • 9 q232. 用栈实现队列 -解法

  • 10 q503. 下一个更大元素 II -单调栈法

  • 11 q496. 下一个更大元素 I -单调栈法

  • 12 q1019. 链表中的下一个更大节点 -单调栈

  • 13 q1047. 删除字符串中的所有相邻重复项 -栈
    q

队列

  • 1 q406根据身高重建队列 -解法 参考:【先排序,再插队】动画演示算法过程,有点小套路

其他

  • 1 q485最大连续1的个数 -解法

  • 2 q1078Bigram分词 -解法

  • 3 q1480一维数组的动态和 -解法

  • 4 q1365有多少小于当前数字的数字 -解法

  • 5 q539最小时间差 -解法

  • 6 q1085最小元素各数位之和 -解法

  • 7 q1207独一无二的出现次数 -解法

  • 8 q57插入区间 -分支解法

  • 9 q127单词接龙 -迭代法 -BFS

  • 10 q551学生出勤记录I -解法

  • 11 q31下一个排列 -解法

  • 12 q134加油站 -暴力解法 -单次循环遍历

  • 13 q659分割数组为连续子序列 -解法

  • 14 q14最长公共前缀 -解法

  • 15 q621任务调度器 -解法 -参考题解*:【任务调度器】C++ 桶子_配图理解

  • 16 q49 字母异位词分组 -解法

你可能感兴趣的:(LeetCode刷题笔记)