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

视频上传网站如何做武汉seo公司哪家好

视频上传网站如何做,武汉seo公司哪家好,php动态网站开发实例教程,邢台市天气预报15天968.监控二叉树 给定一个二叉树,我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。 示例 1: 输入:[0,0,null,0,0] 输出:1 解释&#xff…

968.监控二叉树

给定一个二叉树,我们在树的节点上安装摄像头。

节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。

计算监控树的所有节点所需的最小摄像头数量。

示例 1:

输入:[0,0,null,0,0]
输出:1
解释:如图所示,一台摄像头足以监控所有节点。

示例 2:

输入:[0,0,null,0,null,0,null,null,0]
输出:2
解释:需要至少两个摄像头来监视树的所有节点。 上图显示了摄像头放置的有效位置之一。


提示:

  1. 给定树的节点数的范围是 [1, 1000]
  2. 每个节点的值都是 0。

思路

想半天想不出来然后去看了各路大神的题解,对比之下发现官方题解的说法完全是在冒充人类。

首先我们先要确定从二叉树的下面往上看,为什么不自顶向下呢?因为头节点放不放摄像头也就省下一个摄像头,但是叶子节点放不放摄像头省下的是指数级的摄像头。

那么从下往上看我们首先想到的是二叉树的后序遍历法(左-右-中),所以本题我们使用递归法来解。

并且,如果要达成局部最优的话,我们一定是在叶子节点的父节点安装摄像头,让所用摄像头最少,达成全局最优。

所以,大体思路就是从低向上遍历二叉树,先给叶子节点父节点放摄像头,然后隔两个节点放一个摄像头,直到到根节点。

但是怎样隔两个节点放一个摄像头呢?此时我们就需要状态转移的公式来记录每个节点的状态。每个节点可能有三种状态:

0:该节点无覆盖

1:该节点有摄像头

2:该节点有覆盖

空节点一律视为有覆盖的情况,因为若把空节点视为无覆盖,那么空节点的父节点——叶子节点就必须放置一个摄像头,这与本意冲突;若把空节点视为有摄像头,那么叶子节点就为有覆盖,那么隔两个节点才会放一个摄像头,实际上没有监控到叶子节点,所以空节点只能视为有覆盖。

那么,对于每个节点的处理逻辑我们可以分为四类情况:

1、左右节点都有覆盖:该节点一定无覆盖

2、左右节点至少有一个无覆盖:该节点一定放摄像头

3、左右节点至少有一个摄像头:该节点一定有覆盖

4、头节点无覆盖:头节点再加一个摄像头。

代码

    class Solution {int res=0;public int minCameraCover(TreeNode root) {return dfs(root)==0?res+1:res;}private int dfs(TreeNode node){if(node==null){return 2;}int left=dfs(node.left);int right=dfs(node.right);if(left==0||right==0){res++;return 1;}if(left==1||right==1){return 2;}return 0;}}

灵茶山艾府的思路我没理解,二刷的时候再研究。

509.斐波那契数

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:

F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1

给定 n ,请计算 F(n) 。

示例 1:

输入:n = 2
输出:1
解释:F(2) = F(1) + F(0) = 1 + 0 = 1

示例 2:

输入:n = 3
输出:2
解释:F(3) = F(2) + F(1) = 1 + 1 = 2

示例 3:

输入:n = 4
输出:3
解释:F(4) = F(3) + F(2) = 2 + 1 = 3

提示:

  • 0 <= n <= 30

思路

经典递归解法:

    class Solution {public int fib(int n) {if(n==1){return 1;}else if(n==0){return 0;}else {return fib(n-1)+fib(n-2);}}}

dp解法:

确定dp数组含义

dp[i]的定义为:第i个数的斐波那契数值为dp[i]

递推公式:dp[i] = dp[i - 1] + dp[i - 2];

初始化:dp[0]=0,dp[1]=1

代码

class Solution {public int fib(int n) {if (n <= 1) return n;             int[] dp = new int[n + 1];dp[0] = 0;dp[1] = 1;for (int index = 2; index <= n; index++){dp[index] = dp[index - 1] + dp[index - 2];}return dp[n];}
}

空间复杂度可以进一步优化,因为不用维护整个dp数组:

class Solution {public int fib(int n) {if (n < 2) return n;int a = 0, b = 1, c = 0;for (int i = 1; i < n; i++) {c = a + b;a = b;b = c;}return c;}
}

http://www.wangmingla.cn/news/146904.html

相关文章:

  • 做证券考试的网站网站首页制作
  • 网站设计的规范百度下载免费安装
  • 网站首页设计制作费用百度指数有什么参考意义
  • 乌鲁木齐网站备案网络营销策划书的范文
  • 棋牌游戏网站模板郑州seo线上推广技术
  • 保定市人民政府网站seo营销论文
  • 免费的舆情网站入口在哪武汉百度推广优化
  • 南京电商网站建设公司排名学网络运营需要多少钱
  • 深圳二手房成交价格查询北京企业网站seo平台
  • 西安便宜网站建设论坛推广的步骤
  • 3d做ppt模板下载网站旺道seo推广效果怎么样
  • 网站建设的总体需求分析百度预测大数据官网
  • 柳州哪家公司做网站好志鸿优化网
  • 全网vip视频网站建设什么是seo推广
  • 在线看网站建设抖音推广公司
  • 权威的合肥网站建设手机软文广告300字
  • ui设计app烟台seo网络推广
  • 网站ie8兼容性北京seo网站开发
  • 上海哪家公司可以做网站商业软文怎么写
  • 网站在当地做宣传青岛网站
  • 网站建设要注意哪些什么是网络营销策划
  • 做电商平台网站网站建设的流程及步骤
  • 北京日报客户端疫情燃灯seo
  • 网站开发代理百度推广入口官网
  • 国外做ic的网站备案查询站长之家
  • 企业网站建设需要考虑内容天津天狮网络营销课程
  • 自己电脑做网站服务器广域网访问seo团队
  • 黑龙江建设人力资源网站今日热搜排行第一名
  • 河南省建设厅网站查询百度seo流量
  • 长春做网站要多少钱培训网站设计