leetcode
AaronFR
不要每次都是看到了希望才去坚持,很多时候可能是坚持了才会看到希望!
展开
-
Leetcode 206.反转链表-题解之深入理解递归
递归问题一直是一个看似简单实则上手很难的方法。很多人(包括我在内)常常无法把具体问题抽象成递归函数,找不到终止条件,不知道函数应该做什么,不清楚要抽象出的逻辑什么...本文尝试用leetcode中的简单链表问题,来一步步阐述递归的思考过程。首先要明白,递归是反复调用自身的过程。递归分为递推和回归两步,递推和回归的中间过渡为终止条件。我们不必考虑每一步递归究竟在做什么,只需要把问题上升一个高度,不去关注细节,只关注宏观逻辑。即可知递归一大关键要素:抽象。题目:思考如何递归往往要考虑三个条件原创 2021-03-08 14:50:41 · 200 阅读 · 0 评论 -
Leetcode 198.打家劫舍-题解之典型动态规划
(1)当只有一户时,小偷只偷该户,即为最大利润。(2)当有两户时,小偷偷两户之中金额较高的,即为最大利润。(3)当有n户时,小偷获取利润有两种可能:a.偷第n户,且偷取前n-2户最大利润。b.偷前n-1户最大利润。使用动态回归,由上述可知状态转移方程为:dp[i] = max(dp[i-2]+nums[i], dp[i-1])由上述可知,边界条件为:dp[0] = nums[0]dp[1] = max(nums[0], nums[1])classSolutio...原创 2021-01-10 21:21:01 · 248 阅读 · 0 评论 -
Leetcode 643.子数组最大平均数-题解
连续且长度为k,可联想到滑动窗口,此题是典型的简单滑动窗口例题。滑动窗口window为大小为k,首先计算最初长度为k的数组和,之后滑动窗口的和则为减去滑动窗口起始点且加上滑动窗口结束点的下一位置值,最大平均数即为所有滑动窗口中和最大的值。classSolution:deffindMaxAverage(self,nums:List[int],k:int)->float:begin,sum_=1,0forjin...原创 2021-01-08 21:57:00 · 183 阅读 · 0 评论 -
Leetcode 547.省份数量-题解
根据题意,可以把图中的城市及其相连关系看作图,城市是图中节点,相连关系是图的边,isConnected可以看作图的邻接矩阵,返回的省份可以看作连通分量。方法可用广度优先搜索和深度优先搜索。1.广度优先搜索广度优先搜索关键:队列、记录已访问节点步骤:遍历isConnected矩阵(每行代表一个城市),如果该城市之前未被访问(即不在任何连通分量里),则创建队列,添加该城市进队列,province数量加一(每创建一次队列即为新的连通分量即province加一),进行广度优先搜索,直到同一个连通..原创 2021-01-08 00:09:30 · 240 阅读 · 0 评论