【随想录】Day37—第八章 贪心算法 part06

devtools/2024/9/22 21:45:11/

目录

  • 题目1: 单调递增的数字
    • 1- 思路
    • 2- 题解
      • ⭐ 单调递增的数字——题解思路
  • 题目2: 监控二叉树
    • 1- 思路
    • 2- 题解
      • ⭐ 监控二叉树——题解思路


题目1: 单调递增的数字

  • 题目链接:738. 单调递增的数字

1- 思路

  • 1. 转 String:将 int 类型的数转为 String 类型,之后通过
  • 2. 逆向遍历:从后往前遍历 String
  • 3. 处理思路:从 size()-2 遍历到 i >= 0
    • 处理情况:当当前元素 i 的元素值大于 后一位 i+1 ,此时需要处理
    • 处理逻辑:令 i 的元素值为当前元素值减一,同时定义 start 记录 i 的位置

2- 题解

⭐ 单调递增的数字——题解思路

在这里插入图片描述

class Solution {public int monotoneIncreasingDigits(int n) {String str = Integer.toString(n);char[] chars = str.toCharArray();int start = str.length();for (int i = str.length() - 2; i >= 0; i--) {if (chars[i] > chars[i + 1]) {chars[i]--;start = i+1;}}for(int i = start ; i<chars.length ;i++){chars[i] = '9';}return Integer.parseInt(String.valueOf(chars));}
}

题目2: 监控二叉树

  • 题目链接:968. 监控二叉树

1- 思路

贪心思路

  • 通过从下网上遍历的方式,则采取二叉树的 后序遍历 ,即 左右中方式
  • 在叶子结点的上一个结点放摄像头,每隔两个结点放一个摄像头,直到遍历到根节点为止

定义结点状态

  • 0 代表这个结点没覆盖
  • 1 代表这个结点有摄像头
  • 2 代表当前这个结点有覆盖的状态
  • 空节点一定是有覆盖状态,才能满足 叶子结点的父节点是有摄像头

后续遍历逻辑

  • 情况1:左右孩子都有覆盖 ——> 父节点只能是状态0,等待父节点的父节点装摄像头
  • 情况2:左右孩子至少有一个无覆盖 ——> 此时 父节点 必须要装一个摄像头,只有父节点装了摄像头才能将当前结点的另一个孩子给覆盖
  • 情况3:左右孩子有一个有摄像头 ——> 此时 父节点一定是覆盖状态
  • 情况4:根节点无覆盖 ——> 此时 要对根节点加一个摄像头

2- 题解

⭐ 监控二叉树——题解思路

在这里插入图片描述

class Solution {int res = 0;public int minCameraCover(TreeNode root) {if(Traversal(root)==0){res++;}return res;}public int Traversal(TreeNode root){if(root== null){return 2;}int left = Traversal(root.left);int right = Traversal(root.right);// 左右孩子都覆盖if(left==2 && right==2){return 0;}// 左右至少有一个无覆盖if(left==0 || right==0){res++;return 1;}// 左右有一个摄像头,当前被覆盖if(left==1 || right==1){return 2;}return -1;}
}

http://www.ppmy.cn/devtools/35549.html

相关文章

SpringSecurity6 学习

学习介绍 网上关于SpringSecurity的教程大部分都停留在6以前的版本 但是&#xff0c;SpringSecurity6.x版本后的内容进行大量的整改&#xff0c;网上的教程已经不能够满足 最新的版本使用。这里我查看了很多教程 发现一个宝藏课程&#xff0c;并且博主也出了一个关于SpringSec…

Flink面试整理-Flink是什么?

Flink是一个开源的流处理框架,用于处理大量数据流。它最初由柏林工业大学的几名博士生开发,并于2014年加入Apache软件基金会。Flink的主要特点和功能包括: 实时流处理:Flink专为连续的数据流设计,可以实时处理数据,支持高吞吐量和低延迟的数据处理。批处理能力:除了流处…

JWT令牌

jwt令牌的组成 1.Header:记录令牌类型,签名算法等,例如:{"alg":"HS256","type":"JWT"} 2.Payload(有效载荷),携带一些自定义信息,默认信息等,例如:{"id":"1","username":"Tom"} 3.Signatu…

Redis学习(七)|如何保证Redis中的数据都是热点数据

文章目录 题目分析回答扩展Spring Boot中时用LRU管理Redisapplication.propertiesapplication.yml Redis 缓存策略 题目 MySQL里有2000w数据&#xff0c;redis中只存20w的数据&#xff0c;如何保证redis中的数据都是热点数据? 分析 这个问题涉及到在一个数据量差异很大的情…

图片四张的时候两个一排 图片三张 五张的时候三个一排 css 如何实现

实现的效果如下图 1、html <view v-if"item.photo_list && item.photo_list.length ! 0" :class"getImageClass(item.photo_list.length)"><view v-for"(j,ind) in item.photo_list" :key"photoind" class"imag…

13 【PS作图】人物绘画理论-脸型

三庭五眼 三庭&#xff1a;脸的长度比例 &#xff08;1&#xff09;发际线到眉毛 &#xff08;2&#xff09;眉毛到鼻底 &#xff08;3&#xff09;鼻底到下巴 三个部分大致为三等分 五眼&#xff1a;脸的宽度比例 以眼睛长度为单位&#xff0c;把脸的宽度分成五等分&#x…

【高校科研前沿】中国科学院地理资源所钟帅副研究员研究组博士生朱屹东为一作在Top期刊发文:从潜力到利用:探索西藏风能资源开发的技术路径优化布局

01 文章简介 论文名称&#xff1a;From potential to utilization: Exploring the optimal layout with the technical path of wind resource development in Tibet&#xff08;从潜力到利用:探索西藏风能资源开发的技术路径优化布局&#xff09; 文章发表期刊&#xff1a;《…

【力扣】203、环形链表 II

142. 环形链表 II 要解决这道题&#xff0c;首先需要对问题进行拆解&#xff1a; 确定链表是否存在环确定环的入口点 如何判断是否存在环呢&#xff1f;这个比较容易想到&#xff0c;使用快慢指针即可判断链表是否存在环。我们定义两个指针&#xff1a; ListNode slow head…