首页 > 其他分享 >213. 打家劫舍 II

213. 打家劫舍 II

时间:2024-09-18 21:45:51浏览次数:1  
标签:f0 f1 213 nums self II 打家劫舍 rob

题目链接 213. 打家劫舍 II
思路 动态规划-打家劫舍-简单变体
题解链接 简洁写法!直接调用 198 题代码!(Python/Java/C++/Go/JS/Rust)
关键点 可以分为两种情况讨论:1. 选第一个位置 2. 不选第一个位置
时间复杂度 \(O(n)\)
空间复杂度 \(O(1)\)

代码实现:

class Solution:
    def simple_rob(self, nums):
        f0 = f1 = 0
        for x in nums:
            f0, f1 = f1, max(f1, f0+x)
        return f1

    def rob(self, nums: List[int]) -> int:
        return max(
            nums[0] + self.simple_rob(nums[2:-1]),
            self.simple_rob(nums[1:])
        )

标签:f0,f1,213,nums,self,II,打家劫舍,rob
From: https://www.cnblogs.com/WrRan/p/18419399

相关文章

  • 当前标识(IIS APPPOOL\.NET v4.5)没有对“C:\Windows\Microsoft.NET\Framework64
    当前标识(IISAPPPOOL\.NETv4.5)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\TemporaryASP.NETFiles”的写访问权限。初学者在使用ISS创建网站时是不是也遇到过类似的问题,这可能是执行当前Web请求期间生成了未经处理的异常,主要就是设置对TemporaryASP.NE......
  • 代码随想录算法训练营,9月18日 | 77.组合,216.组合总和III,17.电话号码的字母组合
    回溯算法理论基础:1.回溯是递归的副产品,有递归就有回溯。2.回溯的本质是穷举,想让回溯法高效些,可以加一些剪枝的操作3.组合问题:N个数里面按一定规则找出k个数的集合切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集排列问题:N个数按......
  • 32130 Data exploration and preparation
    32130AssessmentTask2:DataexplorationandpreparationTaskdetailsThisassessmentwillgiveyouprac!calexperienceindatavisualisation,explora!on,andprepara!on(preprocessingandtransforma!on)fordataanalytics.Thisassignmentisindividual......
  • 198. 打家劫舍
    题目链接198.打家劫舍思路入门动态规划-“打家劫舍”系列题解链接【视频讲解】动态规划入门:从记忆化搜索到递推(Python/Java/C++/Go/JS)关键点无时间复杂度\(O(n)\)空间复杂度\(O(n)\)或者\(O(1)\)代码实现(DFS):classSolution:defrob(self,nu......
  • SciTech-Mathmatics-Probability+Statistics-VII-Statistics:Quantifing Uncertainty+
    SciTech-Mathmatics-Probability+Statistics-VII-Statistics:QuantifingUncertaintySamplingMethods(抽样方法)的原理与实践(终章)在过去的几篇文章,我们一起探索统计学的许多重要概念与方法:样本与总体,统计量、参数估计、假设检验、置信区间、ANOVA(方差分析),RA(回归分......
  • 代码随想录算法训练营第七天|第454题.四数相加II 383. 赎金信 第15题. 三数之和 第18
    第454题.四数相加II给定四个包含整数的数组列表 A,B,C,D,计算有多少个元组(i,j,k,l) ,使得 A[i]+B[j]+C[k]+D[l]=0。为了使问题简单化,所有的A,B,C,D具有相同的长度 N,且0≤N≤500。所有整数的范围在-2^28到2^28-1之间,最终结果不会超......
  • 代码随想录算法训练营二天|209. 长度最小的子数组 59.螺旋矩阵II 区间和 开发商购买土
    209.长度最小的子数组太久没做题初始思路只能想到暴力破解,看了一眼提示可能会用到前缀和,能够想到只要建立一个新数组,bi=a0+a1+...+ai即数组a的前缀,这样子序列i到j就可以表示为bj-bi-1,由于数组元素是大于1的,所以b数组必然是递增的,那么在计算子序列的时候,当符合条......
  • 代码随想录算法训练营第四天|24两两交换链表中的节点 19删除链表的倒数第N个节点 02.0
    24.两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。由于今天赶时间,第一眼看完题目没思路就直接看文字解析了,但还是复述一下看完之后自己的理解/想法/思路。这一题感觉对......
  • 代码随想录Day2 | LeetCode 209. 长度最小的子数组、LeetCode 59. 螺旋矩阵 II、KamaC
    LeetCode209.长度最小的子数组子数组是一个连续的,很容易想到滑动窗口classSolution:defminSubArrayLen(self,target:int,nums:List[int])->int:windowSum=0left,right=0,0res=float('inf')whileright<len(nums......
  • 240. 搜索二维矩阵 II
    思路遍历每一行,将当前行的数存放至哈希表中(in的时间复杂度O(1)),查询target是否存在当前行中,是直接返回遍历结束都找不到target,则说明target不存在classSolution(object):defsearchMatrix(self,matrix,target):""":typematrix:List[List[i......