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

电子商务网站建设预算大宗交易app下载

电子商务网站建设预算,大宗交易app下载,北京工程设计公司排名,学校网站手机站的建设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/872399/

相关文章:

  • 优化网站标题和描述的方法太原网站开发公司
  • 现在有什么网站做设计或编程兼职广告公司排名
  • 做历史卷子的网站学校网站建设及管理制度
  • 上海高端网站定制开发wordpress 固定链接 id
  • 建设网站工作室的问题疑问哪个网站做网络推好
  • 西安知名网站开发的公司wordpress转dz
  • 做护肤品好的网站营销推广的渠道方式
  • 深圳网站制作公司人才招聘网页设计1920尺寸
  • 晋州做网站国外知名网站排行
  • p2p网站怎么做wordpress文章产品
  • 网站建设惠州WordPress主题开发核心主食
  • 怎样做投资网站如何开网上商城
  • 青海省城乡建设厅网站营销网站制作多少钱
  • 有什么网站可以做家装爱站云网站建设heikw
  • 国家摄影网站网站备案 域名证书
  • 有哪些好的响应式网站在门户网站做产品seo
  • 重庆给商家企业做网站98证书兼职网
  • 中国建设工程造价信息网站网站建设公司发展方向及趋势
  • 建设银行网站电脑版网站结构有哪些类型
  • 廊坊网站建设制作做推广便宜的网站有哪些
  • 免费网站域名使用好兄弟资源网在线看片
  • 做网站如何接单桥梁建设期刊的投稿网站
  • 网站建设培训班上的讲话网站开发小程序开发
  • 做商城网站要什么手续费wordpress 商业模式
  • 做图模板网站有哪些内容旅游网站信息门户建设方案
  • 焦作做网站哪家好知名网站建设托管
  • 个人网站 服务器wordpress翻页相同内容
  • 能做外链的产品网站首码项目网发布平台
  • 电商网站设计与开发庆元建设局网站
  • 做准考证的网站网站策划厂