# MyLeetCode **Repository Path**: xianshianwentyl/my-leet-code ## Basic Information - **Project Name**: MyLeetCode - **Description**: 日常刷LeetCode代码,方便同步 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-04-27 - **Last Updated**: 2023-03-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: LeetCode, Java ## README # LeetCode刷题计划 > 参考代码随想录顺序 ## 数组 - [x] 704.二分查找 - 35.搜索插入位置 - 34.在排序数组中查找元素的第一个和最后一个位置 - 69.x 的平方根 - 367.有效的完全平方数 - [x] 27.移除元素(双指针) - 26.删除有序数组中的重复项 - 283.移动零 - 844.比较含退格的字符串 - 977.有序数组的平方 - [x] 977.有序数组的平方 - [x] 209.长度最小的子数组(滑动窗口) - 904.水果成篮 - 76.最小覆盖子串 - [x] 59.螺旋矩阵II - 54.螺旋矩阵 - 剑指Offer 29.顺时针打印矩阵 ## 链表 - [x] 203.移除链表元素 - [x] 707.设计链表 - [x] 206.翻转链表 - [x] 24.两两交换链表中的节点(顺序) - [x] 19.删除链表的倒数第 N 个结点(快慢指针) - [x] 160.相交链表(长度关系) - [x] 142.环形链表 II ## 哈希表 - [x] 242.有效的字母异位词 - 383.赎金信 - 49.字母异位词分组 - 438.找到字符串中所有字母异位词 - [x] 349.两个数组的交集 - 350.两个数组的交集 II - [x] 202.快乐数 - [x] 1.两数之和 - [x] 454.四数相加 II - [x] 15.三数之和(排序+双指针) - [x] 18.四数之和 ## 字符串 - [x] 344.反转字符串 - [x] 541.反转字符串 II - [x] 剑指 Offer 05. 替换空格 - [x] 151.颠倒字符串中的单词 - [x] 题目:剑指Offer58-II.左旋转字符串(局部翻转+全局翻转) - [x] 28.实现 strStr()(KMP算法) - [x] 459重复的子字符串 ## 双指针法 前面已经做过的题 ## 栈与队列 - [x] 232.用栈实现队列 - [x] 225.用队列实现栈 - [x] 20.有效的括号 - [x] 1047.删除字符串中的所有相邻重复项 - [x] 150.逆波兰表达式求值 - [x] 239.滑动窗口最大值(单调队列,可以从队头找极值) - [x] 347.前 K 个高频元素(优先队列,大顶堆) ## 二叉树 - [x] 144.二叉树的前序遍历 - [x] 145.二叉树的后序遍历 - [x] 94.二叉树的中序遍历 - [x] 102.二叉树的层序遍历(队列应用,先进先出,一层一层遍历,从左往右) - 107.二叉树的层序遍历 II - 199.二叉树的右视图 - 637.二叉树的层平均值 - 429.N 叉树的层序遍历 - 515.在每个树行中找最大值 - 116.填充每个节点的下一个右侧节点指针 - 117.填充每个节点的下一个右侧节点指针 II - 104.二叉树的最大深度(BFS,DFS) - 111.二叉树的最小深度(BFS,DFS(有坑)) - [x] 226.翻转二叉树(对称性递归,层次遍历) - https://leetcode.cn/problems/invert-binary-tree/solution/yi-pian-wen-zhang-dai-ni-chi-tou-dui-che-21l9/ - [x] 101.对称二叉树(辅助函数) - 100.相同的树 - 572.另一棵树的子树 ## 回溯算法 - [x] 77.组合(有坑) - [x] 216.组合总和 III - [x] 17.电话号码的字母组合 - [x] 39.组合总和(可以重复选择元素,无重复元素) - [x] 40.组合总和 II(不可以重复选择元素,且含有重复元素) - [x] 131.分割回文串(切割问题) - [x] 93.复原 IP 地址 - [x] 78.子集(子集问题(不含重复元素),收集整个树的每个节点) - [x] 90.子集 II(子集问题(含重复元素)) - [x] 491.递增子序列(有坑) - [x] 46.全排列(排列问题) - [x] 47.全排列 II(这里树层去重优于树枝去重) - [x] 332.重新安排行程 - [x] 51.N 皇后 - [x] 37.解数独(二维) ## 贪心算法 ## 动态规划 - [x] 509.斐波那契数 - [x] 70.爬楼梯 - [x] 746.使用最小花费爬楼梯 - [x] 62.不同路径(二维初始化,无障碍) - [x] 63.不同路径 II(二维初始化,有障碍) - [x] 343.整数拆分 - [x] 96.不同的二叉搜索树 - [x] 416.分割等和子集(转换01背包,求容量为j的背包,最多能装多少, dp[j]=Math.max(dp[j],dp[j-weight[i]+value[i])) - [x] 1049.最后一块石头的重量 II(转换01背包,求容量为j的背包,最多能装多少) - [x] 494.目标和(01背包,求装满背包有几种方法,dp[j]+=dp[j-weight[i]]) - [x] 474.一和零(两维度的01背包) - [x] 518.零钱兑换 II(完全背包,从左往右,可以保证每个物品可以被重复挑选;在求装满背包有几种方案(不考虑顺序),就是外层for循环遍历物品,内层for遍历背包) - [x] 377. 组合总和 Ⅳ(完全背包,求装满背包有几种方案(考虑顺序),就是外层for循环遍历背包,内层for遍历物品) - [x] 322.零钱兑换(完全背包,求装满背包的最少物品数,遍历顺序无所谓,dp[j]=Math.min(dp[j],dp[j-weight[i]]+1)) - [x] 279.完全平方数(完全背包,对物品的定义) - [x] 139.单词拆分(完全背包,对背包和物品的定义,排列数) - [x] 198.打家劫舍(dp[i]=Math.max(dp[i-2]+nums[i],dp[i-1]) 即考虑第i个房间偷or不偷两种情况) - [x] 213.打家劫舍 II - [x] 337.打家劫舍 III - [x] 121.买卖股票的最佳时机(前后递推还能用滚动数组,只允许买卖一次) - [x] 122.买卖股票的最佳时机 II(允许多次买卖) - [x] 123.买卖股票的最佳时机 III(允许最多几次买卖) - [x] 188.买卖股票的最佳时机 IV(允许最多k次买卖) ## 单调栈 ## 后续