LeetCode刷题-题解链接

学习链接

CS-Note
labuladong的算法小抄
Krahets图解算法数据结构
力扣加加
公众号:帅地玩编程、程序员小灰(漫画算法)、代码随想录

一、BFS系列

111. 二叉树的最小深度(入门级)

官方题解(while里面没写for循环遍历一层中每个节点)
我的提交,写了for循环遍历一层中的每个节点

1091. 二进制矩阵中的最短路径

标准的bfs模板(c++版)
Python版

542. 01矩阵(?多源BFS)

详解

二、DFS系列

200. 岛屿数量

岛屿类问题通用解法
题解都挺好看的
Java、JS、Python三种代码

695. 岛屿的最大面积

网格类DFS的写法
官方题解
Python版DFS

三、回溯法系列

17. 电话号码的字母组合

回溯、队列(这里没先添加再删除?)

四、数组系列

88. 合并两个有序数组

gelthin-解释为何要用 nums1[:]

167. 两数之和2(有序数组)

利用双指针求解。
一张图告诉你 O(n) 的双指针解法的本质原理

五、链表系列

21. 合并两个有序链表

链表套路总结
递归解法
图解递归解法

83. 删除排序链表中的重复元素

单指针解法

206. 反转链表

六、树系列

104. 二叉树的最大深度(入门级)

递归解法(也可以用DFS,对比BFS中的111题)

七、DP系列(一种求个数,一种求最优)

  • 一维数组
70. 爬楼梯(其实就是斐波那契数列)

使用额外数组空间和不使用额外空间两种解法

# 空间复杂度O(1)
class Solution:
    def climbStairs(self, n: int) -> int:
        if n <= 2:            
	    return n        
	a = 1        
	b = 2        
	for i in range(3, n+1):            
	    sum_ = a + b            
	    a = b            
	    b = sum_        
	return sum_
509. 斐波那契数列
class Solution:
    def fib(self, N: int) -> int:
        a, b = 0, 1
        for i in range(N):
            a, b = b, a + b
        return a 

区别在于,跳楼梯的dp[2] = 2,斐波那契数列的dp[2] = 1

  • 二维数组
62. 不同路径(思路和斐波那契一样,只不过变成了二维)

动态规划及其优化解(使用滚动数组思想优化空间大小)

63. 不同路径2(网格中存在障碍,可以看作该点的路径数为0)

题解1
题解2
图解

64. 最小路径和(也可以用BFS做?)

动态规划解法

  • 子序列问题
300. 最长上升子序列(经典!)

常规动态规划解法(labuladong),还有一种二分法(正常人想不到,略过)
Python版题解

八、贪心算法

455. 分发饼干

先给胃口小的小朋友发饼干

435. 无重叠区间(或:最多有几个互不相交的区间)

贪心算法(labuladong)
动态规划算法(最长上升子序列等一系列相关问题)

452. 用最少数量的箭引爆气球(其实就是上一道题的变形)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值