当前位置: 首页 > news >正文

课程网站建设技术服务公司网站建设

课程网站建设技术,服务公司网站建设,安庆网站制作,顺德中小企业网站建设198. 打家劫舍 自己的思路: 初始化两个dp数组,dp[i][0]表示不偷第i户,在0-i户可以偷到的最大金额,dp[i][1]表示偷i户在0-i户可以偷到的最大金额。 class Solution:def rob(self, nums: List[int]) -> int:n len(nums)dp […

198. 打家劫舍

自己的思路:

初始化两个dp数组,dp[i][0]表示不偷第i户,在0-i户可以偷到的最大金额,dp[i][1]表示偷i户在0-i户可以偷到的最大金额。

class Solution:def rob(self, nums: List[int]) -> int:n = len(nums)dp = [[0] * 2 for _ in range(n)]dp[0][1] = nums[0]for i in range(1, n):dp[i][0] = max(dp[i - 1][0], dp[i - 1][1])dp[i][1] = dp[i - 1][0] + nums[i]return max(dp[n - 1][0], dp[n - 1][1])

优化:

有一点臃肿,可以优化。dp[i][1]实际上跟dp[i-1][1]就没啥关系,直接把dp数组初始化成一维的就行了。

class Solution:def rob(self, nums: List[int]) -> int:n = len(nums)if n == 1:return nums[0]if n == 2:return max(nums[0], nums[1])dp = [0] * ndp[0] = nums[0]dp[1] = max(nums[0], nums[1])for i in range(2, n):dp[i] = max(dp[i - 1], dp[i - 2] + nums[i])return dp[n - 1]

更优化:

想起了斐波那契数列...

class Solution:def rob(self, nums: List[int]) -> int:n = len(nums)if n == 1:return nums[0]if n == 2:return max(nums[0], nums[1])prev = nums[0]cur = max(nums[0], nums[1])for i in range(2, n):prev, cur = cur, max(cur, prev + nums[i])return cur

 213. 打家劫舍 II

还是比较容易想到的,把环展成两个线性的,一个去头一个去尾即可。

class Solution:def rob(self, nums: List[int]) -> int:n = len(nums)if n == 1:return nums[0]if n == 2:return max(nums[0], nums[1])def helper(n, nums):dp = [0] * ndp[0] = nums[0]dp[1] = max(nums[0], nums[1])for i in range(2, n):dp[i] = max(dp[i - 1], dp[i - 2] + nums[i])return dp[n - 1]return max(helper(n-1, nums[1:]), helper(n-1, nums[:-1]))

337. 打家劫舍 III

我的思路:

有点类似贪心的最后一题。

一顿操作AC了,中间遗漏了几种情况,修改后正确了。

class Solution:def rob(self, root: Optional[TreeNode]) -> int:def helper(root):if not root.left and not root.right:return 0, root.valelif root.left and root.right:left_without_self, left_with_self = helper(root.left)right_without_self, right_with_self = helper(root.right)return max(left_without_self + right_without_self, left_with_self + right_with_self, left_without_self + right_with_self, left_with_self + right_without_self), left_without_self + right_without_self + root.valelif root.left and not root.right:left_without_self, left_with_self = helper(root.left)return max(left_with_self, left_without_self), left_without_self + root.valelif root.right and not root.left:right_without_self, right_with_self = helper(root.right)return max(right_with_self, right_without_self), right_without_self + root.valreturn max(helper(root))

优化:

终止条件从叶子节点改成空节点,可以将之后的情况全部统一起来。

class Solution:def rob(self, root: Optional[TreeNode]) -> int:def helper(root):if not root:return 0, 0left = helper(root.left)right = helper(root.right)not_include = max(left) + max(right)include = left[0] + right[0] + root.valreturn not_include, includereturn max(helper(root))

带备忘的递归:

class Solution:def rob(self, root: Optional[TreeNode]) -> int:memo = {}def helper(node):if not node:return 0if node in memo:return memo[node]val = node.val# 如果偷当前节点,则不能偷其直接的左右子节点,但可以偷其孙子节点if node.left:val += helper(node.left.left) + helper(node.left.right)if node.right:val += helper(node.right.left) + helper(node.right.right)# 不偷当前节点,可以偷其左右子节点not_steal = helper(node.left) + helper(node.right)# 对于当前节点,选择偷与不偷的最大值result = max(val, not_steal)memo[node] = resultreturn resultreturn helper(root)

今日总结:

自己写能AC,都能get到要点~~~精简的代码还是得看题解。

http://www.yayakq.cn/news/829589/

相关文章:

  • 做音乐 交流网站泰安人力资源招聘
  • 一个具体网站的seo优化上海h5网站建设
  • 成都网站优化推广方案wordpress需要安装哪些插件
  • 网站后台怎么做qq群自动加网站开发 加密保护
  • 怎样修改网站的主页内容建设银行大连招聘网站
  • 微信怎么建设自己网站wordpress博客登陆
  • 长沙网站seo服务wordpress列表分页代码
  • 网站开发外贸客户判断网站到期
  • 管理有限公司网站设计网页设计与网站建设课程
  • 网站建站中关键字搜索怎么弄哪个网站ppt模板免费下载
  • 有名的网站制作公司做阿里巴巴类似的网站吗
  • 小网站关键词搜什么wordpress导航标签文件在哪
  • 如何快速提升网站权重wordpress博客模板下载
  • 罗湖网站开发秘密入口3秒自动进入
  • 网站打不开 ...深圳公司网站建设设计
  • 免费自动建站站长工具是做什么的
  • 郑州做网站推广电话易优cms收费吗
  • 辛集市建设局网站商城建站流程
  • .net 网站 语言新公司起名大全集
  • 济南网站制作培训班工业设计就业前景
  • 做旅游网站需要引进哪些技术人才建设科技处网站
  • 衡水龙华的网站建设智能家居网站模板
  • 建站服务公司网站源码网站开发的名称叫什么
  • 网站开发属于哪个部门做第三方支付网站违法吗
  • 营销型企业网站分析与诊断上海有哪些网络公司
  • 做一个自己的app要多少钱网站优化要怎么做才会做到最佳
  • 北京朝阳区建设工作办公网站网站建设架构 服务器
  • 找人做网站需要注意问题关于建立企业网站的方案内容
  • 河南响应式建站logo制作步骤
  • 网页设计与网站建设+pdf有没有什么需要推广的平台