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

织梦可以做家教网站吗网站建设模板坏处

织梦可以做家教网站吗,网站建设模板坏处,软件定制一般多少钱,馆陶网站建设价格leetcode 198 打家劫舍 leetcode 213 打家劫舍 II leetcode 337. 打家劫舍 III 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#…

leetcode 198 打家劫舍
leetcode 213 打家劫舍 II
leetcode 337. 打家劫舍 III
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。

给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。

示例 1:

输入:nums = [2,3,2]
输出:3
解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。
示例 2:

输入:nums = [1,2,3,1]
输出:4
解释:你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。
偷窃到的最高金额 = 1 + 3 = 4 。
示例 3:

输入:nums = [1,2,3]
输出:3

提示:

1 <= nums.length <= 100
0 <= nums[i] <= 1000

思路,对于打家劫舍 I, 可以转化成动态规划问题求解,对于打家劫舍 II ,首尾认为是相邻,可以转换成调用 打家劫舍 I 中的问题两次,

class Solution:def maxMoney(self, nums):## dp[i][0] 表示到第 i 位置为止,不偷 i 的最大金额,dp[i][1] 表示偷 i 的最大金额dp = [[0, 0] for i in range(len(nums))]dp[0][1] = nums[0]for i in range(1, len(nums)):dp[i][0] = max(dp[i-1][0], dp[i-1][1])dp[i][1] = dp[i-1][0]+nums[i]return max(dp[-1][0], dp[-1][1])def rob(self, nums: List[int]) -> int:if len(nums) == 1:return nums[0]return max(self.maxMoney(nums[:-1]), self.maxMoney(nums[1:]))

打家劫舍 III, 定义字段 a 和 b,分表表示 盗取(不盗取) 以 当前 root 节点为根节点的最大金额,这样递归就能求解出来。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def __init__(self):self.a = dict()  ## 存放以某个节点为根节点能盗取的最高金额(偷根节点)self.b = dict()  ## 存放以某个节点为根节点能盗取的最高金额(不偷根节点)## f 为 1 时, 表示偷 root 节点, 为 0 表示不偷def dfs(self, root, f):if root == None:return 0res = 0left_0 = self.b[root.left] if root.left in self.b else self.dfs(root.left, 0)right_0 = self.b[root.right] if root.right in self.b else self.dfs(root.right, 0)left_1 = self.a[root.left] if root.left in self.a else self.dfs(root.left, 1)right_1 = self.a[root.right] if root.right in self.a else self.dfs(root.right, 1)res_0 = max(left_0, left_1) + max(right_0, right_1)  ## 不偷  root 节点res_1 = root.val + left_0 + right_0    ## 偷 root 节点self.a[root] = res_1self.b[root] = res_0if f == 1:return res_1else:return res_0def rob(self, root: Optional[TreeNode]) -> int:return max(self.dfs(root, 0), self.dfs(root, 1))
http://www.yayakq.cn/news/472160/

相关文章:

  • 网站建设siteserver今朝装饰
  • 东莞网站建设做网站免费做思维导图的网站
  • 宣传片制作公司资质天津网站优化怎么样
  • 有没有工程外包的网站中国铁建股份有限公司
  • 河南平台网站建设做logo网站的公司
  • icp备案域名网站备案信息网络营销策略包括哪四种
  • 免费正能量励志网站wordpress 新版
  • 网站备案需要ftp吗中国建设银行2024版本
  • 深圳关键词优化报价长沙网站seo价格
  • 建网站带app多少投资沧州最火网站
  • 企业网站设计特点网站受到攻击 怎么做攻击的
  • 南阳网站建设口碑app的制作流程图
  • 有什么做网站优化公司甘肃兰州市
  • 怎么建设一个网站类似视频教程网站的wordpress主题
  • 南昌大型网站建设公司网站的特效代码
  • 英国免费做网站广西seo网站
  • 南昌市网站建设推广天津建设工程信息网网站首页
  • 个人域名能做网站吗网站建设方案书怎么写
  • 河北邯郸中考成绩查询网站盐城市亭湖区建设局网站
  • 微商城网站建设多少钱wordpress图书页面
  • 如何在网站后台删除栏目硬件开发工程师面试题
  • 南阳网站建设电话番禺区住房和建设局物业网站
  • 做图片素材的网站做个类似淘宝的网站怎么做
  • 网站怎么做二维码链接内网做网站
  • 国外公司查询网站网站 什么语言开发的
  • 最好的网站设做问卷的网站有那些
  • 专业微信网站开发公司仿70网站分类目录源码
  • 阿里巴巴怎么做不花钱的网站个人可以做社区网站有哪些
  • 国企集团门户网站建设方案萧县住房和城乡建设局网站
  • 容桂营销网站建设孝感网站制作