[Swift]LeetCode968.监控二叉树 | Binary Tree Cameras

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10201562.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

Given a binary tree, we install cameras on the nodes of the tree. 

Each camera at a node can monitor its parent, itself, and its immediate children.

Calculate the minimum number of cameras needed to monitor all nodes of the tree.

Example 1:

Input: [0,0,null,0,0]
Output: 1
Explanation: One camera is enough to monitor all nodes if placed as shown.

Example 2:

Input: [0,0,null,0,null,0,null,null,0]
Output: 2
Explanation: At least two cameras are needed to monitor all nodes of the tree. The above image shows one of the valid configurations of camera placement.

Note:

  1. The number of nodes in the given tree will be in the range [1, 1000].
  2. Every node has value 0.

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

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

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

 

示例 1:

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

示例 2:

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


提示:

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

 52ms

 1 /**
 2  * Definition for a binary tree node.
 3  * public class TreeNode {
 4  *     public var val: Int
 5  *     public var left: TreeNode?
 6  *     public var right: TreeNode?
 7  *     public init(_ val: Int) {
 8  *         self.val = val
 9  *         self.left = nil
10  *         self.right = nil
11  *     }
12  * }
13  */
14 class Solution {
15     func minCameraCover(_ root: TreeNode?) -> Int {
16         var ans:[Int] = mh(root)
17         return min(ans[1], ans[2])
18     }
19     
20     func mh(_ ro:TreeNode?)-> [Int]
21     {
22         if ro == nil
23         {
24             var ans:[Int] = [Int](repeating:0,count:3)
25             ans[1] = 1000000
26             return ans
27         }
28         var l:[Int] = mh(ro!.left)
29         var r:[Int] = mh(ro!.right)
30         var ans:[Int] = [Int](repeating:0,count:3)
31         ans[0] = l[2] + r[2];
32         ans[1] = 1000000;
33         ans[2] = 1000000;
34         for i in 0..<3
35         {
36             for j in 0..<3
37             {
38                 ans[1] = min(ans[1], l[i]+r[j]+1)
39             }
40             if i==0 {continue}
41             ans[2] = min(ans[2], l[1]+r[i])
42             ans[2] = min(ans[2], l[i]+r[1])
43         }
44         return ans
45     }
46 }

 

转载于:https://www.cnblogs.com/strengthen/p/10201562.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven神秘化

由于我的Android开发的背景下&#xff0c;我比较习惯到摇篮 &#xff0c;而不是Maven的 。 尽管我知道Gradle基于Maven&#xff0c;但我从未调查过幕后发生的事情。 在过去的一周中&#xff0c;我一直在尝试了解细节并找出Maven的不同组成部分。 什么是Maven Maven是主要用于J…

走进JVM【二】理解JVM内存区域

引言 对于C程序员&#xff0c;内存分配与回收的处理一直是令人头疼的问题。Java由于自身的自动内存管理机制&#xff0c;使得管理内存变得非常轻松&#xff0c;不容易出现内存泄漏&#xff0c;溢出的问题。 不容易不代表不会出现问题&#xff0c;一旦内存泄漏或溢出的情况发生&…

mysql一对多_mysql一对多查询合并多的一方的数据。

有时候会有这样一个需求&#xff0c;查询的一条记录需要包含另一个表的多条记录&#xff0c;并且让多条记录成为一个字段组成最终的一条记录。比较难描述&#xff0c;看例子吧。创建一个产品表&#xff1a;create table product(proId int(10),proName varchar(50))创建一个成分…

Matlab矩阵、元胞数组的合并拼接

矩阵合并拼接 1.横向拼接 [a,b] [a b]均可 例1 >> amagic(3)a 8 1 63 5 74 9 2>> brand(3)b 0.6324 0.5469 0.15760.0975 0.9575 0.97060.2785 0.9649 0.9572>> c[a,b]c 8.0000 1.0000 6.0000 0.632…

Matlab拆分矩阵/Matlab如何分割大矩阵(mat2cell函数)

dim1Dist分割后矩阵行数组成的向量&#xff0c;dimNDist指的是分割后矩阵列数组成的向量 例有100*200的矩阵A >> Arand(100,200); >> bmat2cell(A,[30 40 30],[100 70 30])b 33 cell 数组{30100 double} {3070 double} {3030 double}{40100 double} {40…

分布式系统部署、监控与进程管理的几重境界

陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice t.sina.com.cn/giantchen 陈硕关于分布式系统的系列文章&#xff1a;http://blog.csdn.net/Solstice/category/802325.aspx 本作品采用“Creative Commons 署名-非商业性使用-禁止演绎 3.0 Unported 许可协议(cc by-nc-nd)”…

.net core mvc初级教程(六)

一、创建movie的视图 二、对cinema、movie视图添加‘添加信息’的操作 一、创建movie的视图 在views文件夹下添加Movie文件夹&#xff0c;在这个文件夹下添加Index.cshtml视图&#xff0c;为什么添加Index.cshtml这个名字的视图&#xff0c;可以看看我们写的MovieController控制…

apache camel_发掘Apache Camel的力量

apache camel最近几年&#xff0c;ESB软件越来越受欢迎。 如果大多数人通常知道什么是ESB&#xff0c;那么他们很少会清楚地了解这种体系结构的不同组件的确切作用。 例如&#xff0c;Apache ServiceMix由三个主要组件组成&#xff1a;Apache Karaf&#xff08;OSGI容器&#…

角反射器的功能及应用

雷达反射器又名角反射器&#xff0c;它是通过金属板材根椐不同用途做成的不同规格的雷达波反射器。当雷达电磁波扫描到角反射后&#xff0c;电磁波会在金属角上产生折射放大&#xff0c;产生很强的回波信号&#xff0c;在雷达的屏幕上出现很强的回波目标。由于角反射器有极强的…

mysql卸载权限不够_Linu下启动MySQL结果显示:env: /etc/init.d/mysql:权限不够怎么解决?...

展开全部Linu下启动MySQL结果显示&#xff1a;env: /etc/init.d/mysql: 是脚本执行的问题解决办法&#xff1a;依次e69da5e887aa3231313335323631343130323136353331333365633936执行下面的命令(执行失败的话&#xff0c;检查路径是否正确)&#xff1a;cp /etc/init.d/mysql /e…

GDAL/ORG之Python获取与安装

GDAL(Geospatial Data Abstraction Library)是一个的开源栅格空间数据读取/转换库。其中还有一系列命令行工具来进行数据转换和处理。而ORG项目是GDAL的一个分支&#xff0c;功能与GDAL类似&#xff0c;但其提供对矢量数据的支持。 也就是说&#xff0c;可以用ORG的库来读取、处…

Firewall配置

一、安装firewall #yum install -y firewalld firewall-config 二、启动并设置开机自启动# systemctl start firewalld# systemctl enable firewalld# systemctl stop firewalld# systemctl disable firewalld 三、firewall配置# firewall-config 防火墙图形配置界面# firewall…

网页cookie是什么?

Cookie 是用户访问的网站创建的文件&#xff0c;存储在用户电脑的硬盘中&#xff0c;用于保存浏览信息&#xff0c;例如您的网站偏好设置或个人资料信息。网站依靠Cookie辨认用户行踪&#xff0c;了解用户感兴趣内容&#xff0c;收集与用户有关的信息。用户访问查询网页上操作信…

使用基于微服务的流架构更好地进行大规模的复杂事件处理(第1部分)

基于微服务的流架构与开源规则引擎相结合&#xff0c;使实时业务规则变得容易 这篇文章旨在详细说明我将OSS业务规则引擎与Kafka风格的现代流消息传递系统集成在一起的项目。 该项目的目标&#xff08;即众所周知的复杂事件处理&#xff08;CEP&#xff09;&#xff09;旨在实…

chown r mysql ._chown -R 用户名:组名 ./ 及 chown用法介绍

当我们在不通过yum(CentOS)、apt-get(Ubuntu)来安装MySQL的时候&#xff0c;通常执行以下命令来改变目录的拥有者&#xff1a;[rootlocalhost ~]# chown -R mysql:mysql ./这两个mysql谁是用户名谁是用户组呢&#xff1f;见chown详解。chown将指定文件的拥有者改为指定的用户或…

c语言abs和fabs的区别是什么?

abs是整数取绝对值&#xff0c;定义在stdlib.h头文件中。而fabs是指浮点数取绝对值&#xff0c;定义在math.h头文件中。 函数原型 int abs(int x) double fabs(double x)

Linux下编译GDAL

一、准备工作 从官网下载GDAL、PROJ.4和GEOS&#xff0c;将其存放在/home/liml/Work/3rdPart目录并解压&#xff0c;如下图所示。下载地址请自行Google。注&#xff1a;使用的系统是CentOS6.4 X64版本&#xff0c;其他的Linux系统都是一样的。 接下来检查系统中是否安装了开发…

PS提示错误1解决办法

重装电脑系统后&#xff0c;PS打不开了&#xff0c;提示错误1.在网上搜索&#xff0c;很多网友说要卸载重装。控制面板看不到ps&#xff0c;于是下载了Adobe卸载工具&#xff08;点击链接下载&#xff09;&#xff0c;但是这个程序识别不了安装的ps.最后通过以下办法解决。 1.…

如何为你的博客园添加到百度统计

1.打开百度统计的地址 https://tongji.baidu.com/web/welcome/login?castkLTE%3D 2.注册&#xff0c;打开网址后&#xff0c;右面有注册按钮&#xff0c;点击注册 选择站长版&#xff0c;点击去 填写自己的注册信息 3.填完之后&#xff0c;登录进去&#xff0c;在管理标签下有…

mysql 左连接 重复_mysql左连接重复行

我正在设计一个类似于4个表格的字典数据库wordswordid | lemmasenseswordid | synsetidsynsetssynsetid | definitionsamplessynsetid | sample所以我使用下面的查询来获取所有意义定义和样本if(isset($searchterm)){echo "".$searchterm."";// QUERY TO F…