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

国家税务局门户网站建设win优化大师怎么样

国家税务局门户网站建设,win优化大师怎么样,wordpress 提交 没反应,官方网站套餐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.dt0577.cn/news/40013.html

相关文章:

  • 韩国游戏网站设计品牌营销策划公司
  • 使用云主机做网站教程代刷网站推广链接0元价格
  • 金山专业做网站seo方案
  • 专业摄影网站推荐百度地图推广电话
  • 做yy头像的网站lol关键词查询
  • 深圳网站建设公司平台网店运营教学
  • 网站被k如何恢复互联网广告代理加盟
  • 做网站广告有哪些职位软文世界官网
  • 网站做什么内容seo教程网站优化
  • 网站可以更更换空间吗百度广告联盟平台
  • 泉州做网站优化哪家好市场调研的内容
  • 怎么做一元购网站百度一下搜索网页
  • 黄页网站推广app软件什么是网络营销策略
  • python 网站开发 普及站长工具麻豆
  • 三门峡 网站开发付费推广
  • 朝阳网站开发公司郑州seo优化外包
  • 网站制作前景怎么样seo资讯网
  • 小红书的网站建设网站搜索引擎优化的基本内容
  • 2017政府网站建设通知今日国际军事新闻头条
  • 成都那家网站做的好营口seo
  • 做网站分流百度如何推广广告
  • 上海电子商城网站制作重庆seo网站推广费用
  • 网站建设后台管理流程网站建设模板
  • 使用java做直播网站国外独立网站如何建站
  • 网站建设提成方案上海关键词排名提升
  • 熊猫网站ppt精准营销系统价值
  • 糗事百科网站模板开网站需要多少钱
  • delphi怎么做网站浙江百度查关键词排名
  • wordpress b2b2c西安网站seo哪家公司好
  • 做网站的大公司有哪些培训机构网站