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

代码随想录算法训练营第三十七天 | 力扣 738.单调递增的数字, 968.监控二叉树

738.单调递增的数字

题目

738. 单调递增的数字

当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。

给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。

解析

从后向前遍历,就可以重复利用上次比较得出的结果,

出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先让strNum[i - 1]--,然后strNum[i]赋9

Java代码实现

public int monotoneIncreasingDigits(int n) {String[] str = String.valueOf(n).split("");int startFlag = str.length;for (int i = str.length - 1; i > 0; i--) {if (Integer.parseInt(str[i]) < Integer.parseInt(str[i - 1])) {str[i - 1] = String.valueOf(Integer.parseInt(str[i - 1]) - 1);startFlag = i;}}for (int i = startFlag; i < str.length; i++) {str[i] = "9";}return Integer.parseInt(String.join("", str));
}

968.监控二叉树

题目

968. 监控二叉树

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

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

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

解析

头结点放不放摄像头也就省下一个摄像头, 叶子节点放不放摄像头省下了的摄像头数量是指数阶别的。

所以我们要从下往上看,局部最优:让叶子节点的父节点安摄像头,所用摄像头最少,整体最优:全部摄像头数量所用最少!

  • 0:该节点无覆盖
  • 1:本节点有摄像头
  • 2:本节点有覆盖

Java代码实现

int result = 0;
/***  节点的状态值:*    0 表示无覆盖*    1 表示 有摄像头*    2 表示有覆盖* @param root 二叉树* @return 最小摄像头数*/
public int minCameraCover(TreeNode root) {if(treeCam(root)==0){result++;}return result;
}private int treeCam(TreeNode root) {if (root == null) {return 2;}int left = treeCam(root.left);int right = treeCam(root.right);if (left == 2 && right == 2) {return 0;} else if (left == 0 || right == 0) {result++;return 1;} else {// 此时至少一个摄像头return 2;}
}
http://www.lryc.cn/news/91396.html

相关文章:

  • C++内存总结
  • 开发移动端官网总结_Vue2.x
  • Zookeeper+消息队列Kafka
  • 【滤波】设计卡尔曼滤波器
  • redis主备切换,哨兵模式,缓存穿透、缓存击穿、缓存雪崩问题
  • 2023山东icpc省赛总结
  • linux0.12-12-fs
  • 快速入门SpringMVC 学习
  • leetcode96--不同的二叉搜索树[java]
  • 【Spring 项目的创建和使用】
  • 数据类型.
  • 深入了解JavaScript中的Promise
  • Solidity基础六
  • 自学网络安全解决问题方法
  • Java之旅(七)
  • 测试报告模板二
  • C语句概述
  • C++ [STL之vector模拟实现]
  • 【算法竞赛进阶指南】141.周期 题解 KMP 最小循环节
  • 【Springboot 入门培训 】#19 Spring Boot 组件扫描与bean生命周期
  • Linux printf 函数输出问题
  • 皮卡丘Unsafe Fileupload
  • 最优化简明版(上)
  • MySQL的一些介绍
  • unity发布webGL后无法预览解决
  • Flume和Kafka的组合使用
  • JSONSQL:使用SQL过滤JSON类型数据(支持多种数据库常用查询、统计、平均值、最大值、最小值、求和语法)...
  • Linux输入输出重定向
  • 使用kettle进行数据统计
  • 线程的取消和清理