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

怎么建立微信网站西安稳定的seo

怎么建立微信网站,西安稳定的seo,电子商务网站建设与实践,手机app客户端198.打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个…

198.打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警

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

解题思路:

确定dp数组含义:dp[i]遍历到房屋index为i时所能打劫到的最多钱

确认递推公式:dp[i]取决于前一个房屋和前两个房屋是否有被偷,如果前一个被偷,则不能偷第i个,如果第i-2个被偷,可选择是否偷第i个。dp[i] = max(dp[i-2]+nums[i], dp[i-1])

初始化:dp[0] = nums[0], dp[1] = max(nums[0], nums[1])

遍历顺序:从小到大遍历

打印dp数组

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

 213.打家劫舍II

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

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

解题思路:

本题与上一题区别在于环形数组和直线数组,环形数组首尾不能同时取值,因此分为三种情况:

  1. 不考虑首尾的数组
  2. 不考虑尾部的数组
  3. 不考虑首部的数组

可以发现2, 3包含情况一,因此只需要在2,3中取最大值即可。

dp五步骤:

确定dp数组含义:dp[i]遍历到房屋index为i时所能打劫到的最多钱

确认递推公式:dp[i]取决于前一个房屋和前两个房屋是否有被偷,如果前一个被偷,则不能偷第i个,如果第i-2个被偷,可选择是否偷第i个。dp[i] = max(dp[i-2]+nums[i], dp[i-1])

初始化:dp[0] = nums[0], dp[1] = max(nums[0], nums[1])

遍历顺序:从小到大遍历

打印dp数组

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

 337.打家劫舍III

小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。

除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直接相连的房子在同一天晚上被打劫 ,房屋将自动报警。

给定二叉树的 root 。返回 在不触动警报的情况下 ,小偷能够盗取的最高金额 。

示例 1:

输入: root = [3,2,3,null,3,null,1]
输出: 7 
解释: 小偷一晚能够盗取的最高金额 3 + 3 + 1 = 7

解题思路:

本体使用递归三部曲结合dp五步骤,设置dp[0],dp[1]表示打劫当前节点和不打劫当前节点的最大值,每个node有一组对应的dp[0], dp[1]。使用后序遍历,当前节点dp值需要结合其左右节点dp进行分析。 递归三步骤:确定递归参数,确定停止条件,递归逻辑。输入参数统一为当前节点即表示为root, 当root == null停止并返回0,再遍历左右子树,中间值取最大dp值。

重点理解

val1 = root.val + leftdp[0] + rightdp[0]#行窃root

val2 = max(leftdp[0],leftdp[1])+max(rightdp[0], rightdp[1])#不行窃root,选取左右子树行窃或不行窃时的最大值,两边取max。

代码如下:

# 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 rob(self, root: Optional[TreeNode]) -> int:def helper(root):if not root:return [0,0]leftdp = helper(root.left)rightdp = helper(root.right)val1 = root.val + leftdp[0] + rightdp[0]#行窃rootval2 = max(leftdp[0],leftdp[1])+max(rightdp[0], rightdp[1])#不行窃rootreturn [val2, val1]return max(helper(root))

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

相关文章:

  • 柳州微网站开发500云网站
  • 全国十大网站建设公司哪家好高端网站设计新感觉建站
  • wdlinux 默认网站舒兰网站建设
  • 网站备案流程图片为什么要买wordpress会员
  • 海淀区城市建设档案馆网站金坛网站开发
  • 成都大型网站建设百度官方版
  • 青岛网站模板建站公司网页怎么制作
  • 国内最大的网站建设公司排名学生网页设计作品欣赏
  • 高州网站seo嵩县网站开发
  • 襄县网站建设网站邮箱建设
  • 南康网站建设公司棋牌游戏网站建设
  • 织梦网站模板教程设计工作室营业执照
  • 联合易网做网站自学html做网站要多久
  • 郑州专业网站建设价格成都专业网站建设价格
  • 怎样设置网站网页投放广告怎么收费
  • 苏州网站建设熊掌号wordpress怎么上传头像不显示
  • 做淘宝客网站要备案吗品牌网站建设小蝌蚪1a
  • 将网页加入可信站点百度网盟推广费用是多少
  • 网站群cms英文手表网站
  • 天津和平做网站公司郑州科大医院
  • 网站建设不足之处h5商城网站建设是什么
  • 做淘宝客网站要申请什么想学做网站学什么教程
  • 淘客网站怎么做抖音代运营的资源
  • 域名与网站的区别二手物品交易网站设计英文
  • 商丘做网站公司分析网站建设前期的seo准备工作
  • 西宁制作网站需要多少钱wordpress锚点插件
  • 腾讯云是做网站的吗吉林省建设监理检测网站
  • 让网站做的有吸引力现在购物平台哪个最好
  • wap游戏入口seo网站推广是什么
  • 征求网站建设意见的通知短链接生成器官方