Git Product home page Git Product logo

leetcode-cat's Introduction

LeetCode解题

Leetcode解题记录及每种问题具有代表性题目的归纳,由于Leetcode早已从150题步入到了现在的千题时代,笔者尽可能的在这里做一个优选,希望此项目可以帮助小伙伴们更快的掌握对应的知识点~

每一道题目都可能有多种不同的解法,同时每一道题目也可能是多个知识点的综合,下面的归纳选取的是在一定程度上能体现其解法的题目

文档上方为原题链接 下方表格为解题与注释 方便小伙伴查看

欢迎star和fork 个人微信号:z530359861 寻找喜欢基础算法的小伙伴~

动态规划

   --寻路问题

       62.不同路径 63.不用路径II 64.最小路径和 120.三角形最小路径和 931.下降路径最小和 1289.下降路径最小和II 面试题 47. 礼物的最大价值

   --背包问题

       322.零钱兑换 416.分割等和子集 面试题 08.11.硬币

   --最长上升子序列问题

       139.单词拆分 300.最长上升子序列

   --最长公共子序列问题

       1143.最长公共子序列

   --智能存储

       304.二维区域和检索-矩阵不可变

   --其他

       72.编辑距离 132.分割回文串II 198.打家劫舍 213.打家劫舍II 221.最大正方形 309.最佳买卖股票时机含冷冻期 337.打家劫舍III 413.等差数列划分 1039.多边形三角剖分的最低分 1043.分割数组以得到最大和 1218. 最长定差子序列 1269.停在原地的方案数 1312.让字符串成为回文串的最少插入次数 面试题10- I.斐波那契数列 面试题 17.16.按摩师

   --遍历

      94.二叉树的中序遍历 102.二叉树的层次遍历 103.二叉树的锯齿形遍历 107.二叉树的层次遍历II 230.二叉搜索树中第K小的元素 501.二叉搜索树中的众数 543.二叉树的直径 663.均匀树划分 1339.分裂二叉树的最大乘积 面试题 面试题32-I.从上到下打印二叉树 面试题 面试题32-II.从上到下打印二叉树II 面试题 面试题32-III.从上到下打印二叉树III

   --树的结构(具有天然的递归性质)

      100.相同的树 101.对称二叉树 1325.删除给定值的叶子节点 1372.二叉树中的最长交错路径 剑指offer 面试题07.重建二叉树 剑指offer 面试题26.树的子结构

   --BST的性质

      1008.先序遍历构造二叉树 1305.两棵二叉搜索树中的所有元素 剑指offer 面试题68-I.二叉搜索树的最近公共祖先 剑指offer 面试题68-II.二叉树的最近公共祖先 面试题 04.05.合法二叉搜索树 面试题 33.二叉搜索树的后序遍历序列

   --深度优先搜索

      108.将有序数组转换为二叉搜索树 110.平衡二叉树 112.路径总和 124.二叉树中的最大路径和

   --广度优先搜索

      116.填充每个节点的下一个右侧节点指针 199.二叉树的右视图

链表

   --基础

      2.两数之和 160.相交链表 1171.从链表中删去总和值为零的连续结点 剑指offer 面试题06.从尾到头打印链表 剑指offer 面试题25.合并两个排序的链表

   --快慢指针

      141.环形链表 234.回文链表 面试题 02.02.返回倒数第 k 个节点

   --反转链表

      143.重排链表 206.反转链表

   --虚拟头结点

      203.移除链表元素 面试题18.删除链表的节点

   --双向链表

      146.LRU缓存机制

DFS

      113.路径总和II 130.被围绕的区域 200.岛屿数量 417.太平洋大西洋水流问题 473.火柴拼正方形 695.岛屿的最大面积 785.判断二分图 934.最短的桥 1254.统计封闭岛屿的数目

BFS

      542.01矩阵 994.腐烂的橘子 1293. 网格中的最短路径 1311.获取你好友已观看的视频

建议这些题目都用DFS和BFS两种方法做一遍

拓扑排序

      207.课程表 210.课程表II

贪心

      关键在于:每一步都是最优解

      55.跳跃游戏 122.买卖股票的最佳时机II 435.无重叠区间 452.用最少数量的箭引爆气球 763.划分字母区间 767.重构字符串 861.翻转矩阵后的得分 942.增减字符串匹配 1081.不同字符的最小序列 1053.交换一次的先前排列 1247.交换字符使得字符串相等 1353.最多可以参加的会议数目

滑动窗口

      3.无重复字符的最长子串 76.最小覆盖子串 209.长度最小的子数组 239.滑动窗口最大值 567.字符串的排列 904.水果成篮 1004.最大连续1的个数III 1234. 替换子串得到平衡字符串 1297.子串的最大出现次数 1350.大小为K且平均值大于等于阈值的子数组数目 1358.包含所有三种字符的子字符串数目 1461.检查一个字符串是否包含所有长度为 K 的二进制子串 面试题 17.18.最短超串

回溯

      关键在于:不合适就退回上一步 然后通过约束条件 减少时间复杂度

      22.括号生成 37.解数独 39.组合总和 40.组合总和II 46.全排列 47.全排列II 51.N皇后 77.组合 78.子集 90.子集II 131.分割回文串 216.组合总和III 691.贴纸拼词 842.将数组拆分成斐波那契数列 996.正方形数组的数目 1079.活字印刷 1219. 黄金矿工 1286. 字母组合迭代器 1239. 串联字符串的最大长度 面试题 08.09.括号

哈希表

      1.两数之和 30.串联所有单词的子串 387.字符串中的第一个唯一字符 560.和为k的子数组 594.最长和谐子序列 720.词典中最长的单词 1248. 统计「优美子数组」 剑指offer 面试题03.数组中重复的数字

排序

      56.合并区间 179.最大数 253.会议室II

双指针

      剑指offer 面试题57.和为s的两个数字 剑指offer 面试题57-II.和为s的连续正数序列 面试题 16.06.最小差

二分查找

      33. 搜索旋转排序数组 81.搜索旋转数组II 240.搜索二维矩阵II 1281.使结果不超过阈值的最小除数 剑指offer 面试题04.二维数组中的查找 剑指offer 面试题11.旋转数组的最小数字 剑指offer 面试题53-II.0~n-1中缺失的数字

剪枝

      15.三数之和 18.四数之和

      347.前K个高频元素 1046.最后一块石头的重量 1438. 绝对差不超过限制的最长连续子数组

      1190.反转每对括号间的子串 1029.删除字符串中所有相邻重复项II 剑指offer 面试题09.用两个栈实现队列 面试题31.栈的压入、弹出序列

多线程

      1115. 交替打印FooBar 1226.哲学家进餐

分治

       95.不同的二叉搜索树II 241.为运算表达式设计优先级

前缀和

       525.连续数组 1292. 元素和小于等于阈值的正方形的最大边长

数学

      LCP 3.机器人大冒险 119.杨辉三角II 357.计算各个位数不同的数字个数 376.摆动序列 391.完美矩形 401.二进制手表 1071.字符串的最大公因子 1072.按列翻转得到最大行数 1180. 统计只含单一字母的子串 1217. 玩筹码 1253.重构2行二进制序列 1262. 可被三整除的最大和 1267.统计参与通信的服务器 1328.破坏回文串 1344.时钟指针的夹角 1395.统计作战单位数 1497.检查数组对是否可以被k整除 面试题 16.01.交换数字

设计

      155.最小栈 225.用队列实现栈 232.用栈实现队列 剑指offer 面试题59-II.队列的最大值

字符串

      80.删除排序数组中的重复项 II 165.比较版本号 243.最短单词距离 402.移掉K位数字 409. 最长回文串 678.有效的括号字符串 1156.单字符重复子串的最大长度 面试题01.06.字符串压缩 面试题45. 把数组排成最小的数

信心题

       LCP 1.猜数字 1103.分糖果II 1189.气球的最大数量 1221.分割平衡字符串 1288.有序数组中出现次数超过25%的元素 1316.不同的循环子字符串 1394. 找出数组中的幸运数 1725. 可以形成最大正方形的矩形数目 面试题 01.08.零矩阵 剑指offer 面试题05.替换空格

题目 难度 语言
LCP 1.猜数字 easy Java
LCP 2.化简分式 easy Java
LCP 3.机器人大冒险 medium Java
1.两数之和 easy Java
2.两数之和 medium Java
3.无重复字符的最长子串 medium Java
15.三数之和 medium Java
18.四数之和 medium Java
22.括号生成 medium Java
30.串联所有单词的子串 hard Java
33. 搜索旋转排序数组 medium Java
37.解数独 medium Java
39.组合总和 medium Java
40.组合总和II medium Java
46.全排列 medium Java
47.全排列II medium Java
51.N皇后 hard Java
55.跳跃游戏 medium Java
56.合并区间 medium Java
62.不同路径 medium Java
63.不同路径II medium Java
64.最小路径和 medium Java
72.编辑距离 hard Java Python
76.最小覆盖子串 hard Java
77.组合 medium Java
78.子集 medium Java
80.删除排序数组中的重复项 II medium Java
81.搜索旋转数组II medium Java
90.子集II medium Java
94.二叉树的中序遍历 medium Java Python
95.不同的二叉搜索树II medium Java
100.相同的树 easy Java
101.对称二叉树 easy Java
102.二叉树的层次遍历 medium Java
103.二叉树的锯齿形遍历 medium Java
107.二叉树的层次遍历II easy Java
108.将有序数组转换为二叉搜索树 easy Java
110.平衡二叉树 easy Java
112.路径总和 easy Java
113.路径总和II medium Java
116.填充每个节点的下一个右侧节点指针 medium Java
119.杨辉三角II easy Java
120.三角形最小路径和 medium Java
122.买卖股票的最佳时机II easy Java
124.二叉树中的最大路径和 hard Java
130.被围绕的区域 medium Java Python
131.分割回文串 medium Java
132.分割回文串II hard Java
139.单词拆分 medium Java
141.环形链表 easy Java
146.LRU缓存机制 medium Java
143.重排链表 medium Java
153.寻找排序数组中的最小值 easy Java
155.最小栈 easy Java
165.比较版本号 medium Java
160.相交链表 easy Java
179.最大数 medium Java
198.打家劫舍 easy Java
199.二叉树的右视图 medium Java
200.岛屿数量 medium Java
203.移除链表元素 easy Java
206.反转链表 easy Java
207.课程表 medium Java
209.长度最小的子数组 medium Java
210.课程表II medium Java
213.打家劫舍II medium Java
216.组合总和III medium Java
221.最大正方形 medium Java
225.用队列实现栈 easy Java
230.二叉搜索树中第K小的元素 medium Java
232.用栈实现队列 easy Java
234.回文链表 easy Java
239.滑动窗口最大值 hard Java
240.搜索二维矩阵II medium Java
241.为运算表达式设计优先级 medium Java
243.最短单词距离 easy Java
253.会议室II medium Java
300.最长上升子序列 medium Java
304.二维区域和检索-矩阵不可变 medium Java
309.最佳买卖股票时机含冷冻期 medium Java
322.零钱兑换 medium Java
337.打家劫舍III medium Java
347.前K个高频元素 medium Java
357.计算各个位数不同的数字个数 medium Java
376.摆动序列 medium Java
387.字符串中的第一个唯一字符 easy Java
391.完美矩形 hard Java
401.二进制手表 easy Java
402.移掉K位数字 medium Java
409. 最长回文串 easy Java
413.等差数列划分 medium Java
416.分割等和子集 medium Java
417.太平洋大西洋水流问题 medium Java
435.无重叠区间 medium Java
452.用最少数量的箭引爆气球 medium Java
473.火柴拼正方形 medium Java
501.二叉搜索树中的众数 easy Java
525.连续数组 medium Java
542.01矩阵 medium Java
543.二叉树的直径 easy Java
560.和为k的子数组 medium Java
567.字符串的排列 medium Java
594.最长和谐子序列 easy Java
663.均匀树划分 medium Java
678.有效的括号字符串 medium Java
691.贴纸拼词 hard Java
695.岛屿的最大面积 medium Java
720.词典中最长的单词 easy Java
763.划分字母区间 medium Java
767.重构字符串 medium Java
785.判断二分图 medium Java
842.将数组拆分成斐波那契数列 medium Java
861.翻转矩阵后的得分 medium Java
904.水果成篮 medium Java
931.下降路径最小和 medium Java
934.最短的桥 medium Java
942.增减字符串匹配 easy Java
990.等式方程的可满足性 medium Java
994.腐烂的橘子 easy Java
996.正方形数组的数目 hard Java
1004.最大连续1的个数III medium Java
1008.先序遍历构造二叉树 medium Java
1103.分糖果 II easy Java
1029.删除字符串中所有相邻重复项II medium Java
1039.多边形三角剖分的最低分 medium Java
1043.分割数组以得到最大和 medium Java
1046.最后一块石头的重量 easy Java
1053.交换一次的先前排列 medium Java
1071.字符串的最大公因子 easy Java
1072.按列翻转得到最大行数 medium Java
1079.活字印刷 medium Java
1081.不同字符的最小序列 medium Java
1115. 交替打印FooBar medium Java
1143.最长公共子序列 medium Java
1156.单字符重复子串的最大长度 medium Java
1171.从链表中删去总和值为零的连续结点 medium Java
1180.统计只含单一字母的子串 easy Java
1189.气球的最大数量 easy Java
1190.反转每对括号间的子串 medium Java Python
1208. 尽可能使字符串相等 medium Java
1213. 三个有序数组的交集 easy Java
1214. 查找两棵二叉搜索树之和 medium Java
1217. 玩筹码 easy Java
1218. 最长定差子序列 medium Java
1219. 黄金矿工 medium Java
1221.分割平衡字符串 easy Java
1226.哲学家进餐 medium Java
1234. 替换子串得到平衡字符串 medium Java
1239. 串联字符串的最大长度 medium Java
1247.交换字符使得字符串相等 easy Java
1248. 统计「优美子数组」 medium Java
1253.重构2行二进制序列 medium Java
1254.统计封闭岛屿的数目 medium Java
1262.可被三整除的最大和 medium Java
1267.统计参与通信的服务器 medium Java
1269.停在原地的方案数 hard Java
1281.使结果不超过阈值的最小除数 medium Java
1286. 字母组合迭代器 medium Java
1288.有序数组中出现次数超过25%的元素 easy Java
1289.下降路径最小和II hard Java
1292. 元素和小于等于阈值的正方形的最大边长 medium Java
1293. 网格中的最短路径 hard Java
1297.子串的最大出现次数 medium Java
1305.两棵二叉搜索树中的所有元素 medium Java
1311.获取你好友已观看的视频 medium Java
1312.让字符串成为回文串的最少插入次数 medium Java
1316.不同的循环子字符串 hard Java
1325.删除给定值的叶子节点 medium Java
1328.破坏回文串 medium Java
1339.分裂二叉树的最大乘积 medium Java
1344.时钟指针的夹角 medium Java
1350.大小为K且平均值大于等于阈值的子数组数目 medium Java
1353.最多可以参加的会议数目 medium Java
1358.包含所有三种字符的子字符串数目 medium Java
1372.二叉树中的最长交错路径 medium Java
1394. 找出数组中的幸运数 easy Java
1395.统计作战单位数 medium Java
1438. 绝对差不超过限制的最长连续子数组 medium Java
1461.检查一个字符串是否包含所有长度为 K 的二进制子串 medium Java
1497.检查数组对是否可以被k整除 medium Java
1725. 可以形成最大正方形的矩形数目 easy Java
剑指offer 面试题03.数组中重复的数字 easy Java
剑指offer 面试题04.二维数组中的查找 easy Java
剑指offer 面试题05.替换空格 easy Java
剑指offer 面试题06.从尾到头打印链表 easy Java
剑指offer 面试题07.重建二叉树 medium Java
剑指offer 面试题09.用两个栈实现队列 easy Java
剑指offer 面试题10- I.斐波那契数列 easy Java
剑指offer 面试题11.旋转数组的最小数字 easy Java
剑指offer 面试题25.合并两个排序的链表 easy Java
剑指offer 面试题26.树的子结构 medium Java
剑指offer 面试题53-II.0~n-1中缺失的数字 easy Java
剑指offer 面试题57.和为s的两个数字 easy Java
剑指offer 面试题57-II.和为s的连续正数序列 easy Java
剑指offer 面试题59-II.队列的最大值 easy Java
剑指offer 面试题68-I.二叉搜索树的最近公共祖先 easy Java
剑指offer 面试题68-II.二叉树的最近公共祖先 easy Java
面试题01.06.字符串压缩 easy Java
面试题 01.08.零矩阵 medium Java
面试题 02.02.返回倒数第 k 个节点 medium Java
面试题 04.05.合法二叉搜索树 medium Java
面试题 08.09.括号 medium Java
面试题 08.11.硬币 medium Java
面试题 16.01.交换数字 medium Java
面试题 16.06.最小差 medium Java
面试题 17.16.按摩师 easy Java
面试题 17.18.最短超串 medium Java
面试题18.删除链表的节点 easy Java
面试题31.栈的压入、弹出序列 medium Java
面试题 面试题32-I.从上到下打印二叉树 medium Java
面试题 面试题32-II.从上到下打印二叉树II easy Java
面试题 面试题32-III.从上到下打印二叉树III medium Java
面试题 33.二叉搜索树的后序遍历序列 medium Java
面试题 45. 把数组排成最小的数 medium Java
面试题 47. 礼物的最大价值 medium Java

leetcode-cat's People

Contributors

zhangtiansimple avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.