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

安全狗iis 网站css无法访问优化关键词排名seo

安全狗iis 网站css无法访问,优化关键词排名seo,目前做网站需要兼容到ie8吗,网页访问wordpress参考文献 代码随想录 一、打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警…

参考文献 代码随想录

一、打家劫舍

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

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

示例 1:

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

示例 2:

输入:[2,7,9,3,1]
输出:12
解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。偷窃到的最高金额 = 2 + 9 + 1 = 12 

问题分析:当前房间是否偷,是不是取决于前一个房间的状态和前2个房间的状态,如果当前房间偷,那么最大价值是不是取决于前2个房间的最大价值 + 当前房间的最大值,如果不偷,那么是不是取决于前一个房间的最大价值,那么是不是要取一个最大值,而dp[i],代表的是第 包含i之前的房间(0 到 i房间的最大值)最大价值。

class Solution(object):def rob(self, nums):""":type nums: List[int]:rtype: int"""if len(nums) == 0:  # 如果没有房屋,返回0return 0if len(nums) == 1:  # 如果只有一个房屋,返回其金额return nums[0]dp = [0 for _ in range(len(nums))]dp[0] = nums[0]dp[1] = max(nums[0], nums[1])print(dp)for i in range(2, len(nums)):dp[i] = max(dp[i - 2] + nums[i], dp[i - 1])return dp[-1] 

二、打家劫舍 II

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

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

示例 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

问题分析:这个问题形成了一个环,首尾相连,那么我们可以分成3种情况,第一种:不包含尾,第二种:不包含首,第三种:不包含首尾,其实情况一和情况二的范围都包含了第三种,所以只有考虑到2种情况,我们这里dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]

class Solution(object):def __init__(self):self.dp = []def rob(self, nums):""":type nums: List[int]:rtype: int"""if len(nums) == 0:return 0if len(nums) == 1:return nums[0]if len(nums) == 2 or len(nums) == 3:return max(nums)self.dp = [0 for _ in range(len(nums) - 1)]self.d(nums[1:])tm = self.dp[-1]self.d(nums[0: len(nums) - 1])return max(tm, self.dp[-1])def d(self, li):self.dp[0] = li[0]self.dp[1] = max(li[0], li[1])for i in range(2, len(li)):print(self.dp)self.dp[i] = max(self.dp[i - 2] + li[i], self.dp[i - 1])

把dp数组变成2个变量来存储:

        因为当前房间根前一个前2个有关,然后需要2个变量来接受前一个,前2个,在求第三个的时候滚动移动,比如dp数组[1,2],然后求当前的房间的最大值时,如果此时的最大值为4,那么dp为[1,2,4],然后此时是不是只依赖2和4的值,所以利用2个变量来进行滚动

class Solution:def rob(self, nums: List[int]) -> int:if len(nums) == 0:return 0if len(nums) == 1:return nums[0]result1 = self.robRange(nums, 0, len(nums) - 2)  # 情况二result2 = self.robRange(nums, 1, len(nums) - 1)  # 情况三return max(result1, result2)# 198.打家劫舍的逻辑def robRange(self, nums: List[int], start: int, end: int) -> int:if end == start:return nums[start]prev_max = nums[start]  # pre_max代替的是dp数组的第一个初始化的元素curr_max = max(nums[start], nums[start + 1]) # curr_max代替的是dp数组的第二个初始化的元素for i in range(start + 2, end + 1):  # 为什么start要加2,因为前面已经初始化了2个,因为要遍历到end所以要加1temp = curr_max  # 因为当前房间根前一个前2个有关,然后需要2个变量来接受前一个,前2个,在求第三个的时候滚动移动,比如dp数组[1,2],然后求当前的房间的最大值时,如果此时的最大值为4,那么dp为[1,2,4],然后此时是不是只依赖2和4的值,所以利用2个变量来进行滚动curr_max = max(prev_max + nums[i], curr_max)prev_max = tempreturn curr_max

三、打家劫舍 III

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

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

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

示例 1:

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

示例 2:

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

问题分析:当前节点要么偷,要么不偷,那么我们返回这2个的最大值,遇到二叉树,就要考虑到遍历顺序,答案是后序,为什么是后序呢?我们这里的dp数组的长度只有2,dp[0]表示不偷,dp[1]表示偷,然后我们该如何把dp数组给初始化每个节点的状态呢?递归,如果我们求当前结果,有2种情况,如果偷,那么它的孩子,就不偷,那么它的孩子不偷时的最大价值是多少呢,如果当前节点不偷,那么就要偷它的孩子,问题来了,它的孩子不偷与偷的价值分别是多小呢,要想知道孩子是多少,首先返回值就是dp,然后遍历的顺序是后序遍历,这样才能知道它的孩子的dp.

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):def __init__(self):self.li = []def rob(self, root):""":type root: TreeNode:rtype: int"""dp = self.d(root)return max(dp)def d(self, root):if not root:return (0,0)left = self.d(root.left) # 返回值是一个dp[i]且长度为2right = self.d(root.right)# 如果当前节点偷,孩子节点不偷,那么就要加上孩子不偷的价值是多少0为不偷,1为偷value1 = root.val + left[0] + right[0]# 当前节点不偷,那么就要考虑孩子偷与不偷,每个孩子是偷呢还是不偷呢,所以要取一个最大值value2 = max(left[0], left[1]) + max(right[0], right[1])return [value2, value1]

http://www.15wanjia.com/news/14585.html

相关文章:

  • php手机网站制作北京全网营销推广公司
  • 个人网站主页模板百度url提交
  • 网站优化分析百度平台商家我的订单查询
  • 单页网站推广nba西部最新排名
  • 郑州本地做团购的网站网站备案是什么意思
  • 网站过期查询教育培训机构排名前十
  • 域名和网站网站设计公司有哪些
  • 济南网站建设 力推聚搜网络百度关键词热搜
  • 热门网站有哪些关键词推广是什么意思
  • 应用商城软件下载 app长春网站优化体验
  • 青岛天河小学网站建设广州百度推广电话
  • 网站设计建设简历网站优化排名操作
  • 网站这么做西安高端网站建设
  • 医疗类网站还有做seo合肥网络推广公司
  • 阿里巴巴网站费用怎么做分录武汉seo服务多少钱
  • wordpress媒体库增加分类什么优化
  • 个人可以做导航网站吗中山seo关键词
  • 沈阳网站推广¥做下拉去118cr网站制作出名的公司
  • 假网站怎么做呢seo站长工具推广平台
  • 余姚网站建设报价百度一下官网
  • 做团购网站需要注册哪些商标百度搜索引擎怎么弄
  • 那个网站做租赁好青岛关键词排名提升
  • 音乐网站开发与设计zac seo博客
  • 树莓派做网站服务器性能怎么样平台优化是指什么
  • 宁津县建设局网站最新域名解析
  • 泰安工作招聘杭州网络推广网络优化
  • 宁波建设网站公司百度管理员联系方式
  • 宝应县住房和城乡建设局网站如何做网络推广
  • 室内设计效果图多少钱一张针对百度关键词策划和seo的优化
  • 做花语的网站提高网站排名