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

server/2024/9/25 8:25:04/

目录

  • 题目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/server/35503.html

相关文章

公网tcp转流

之前做过几次公网推流的尝试, 今天试了UDP推到公网, 再用TCP从公网拉下来, 发现不行, 就直接改用TCP转TCP了. 中间中转使用的python脚本, 感谢GPT提供技术支持: import socket import threadingdef tcp_receiver(port, forward_queue):"""接收TCP数据并将其放入…

有免费的通配符SSL证书吗?通配符证书的申请

首先要了解通配符SSL证书&#xff0c;需要先知晓我们常用的普通单域名SSL证书、多域名SSL证书与之的区别。 单域名SSL证书最容易理解&#xff0c;一张证书有且只能绑定与保护一个域名&#xff0c;例如www.123456.com 证书安装部署完成后则会激活对于该域名的https、即加密访问…

Java之String类

一、String类常用方法 1.引用类型的比较 我们知道在Java中两个引用遍历是不能用" "号来比较的&#xff0c;而String类重写了父类objects的equals方法&#xff0c; 实现了引用类型的比较 例子 import java.util.Scanner; public class Main { public static void…

一份简历的制作

个人简历是求职者面试前最需要准备的一项工具。一份好的简历可以帮助求职者获得更多的面试机会&#xff0c;并且为面试时的表现奠定基础。以下介绍制作简历的几个注意点&#xff0c;仅供参考。 一、个人信息 姓名*性别联系方式 &#xff08;手机号&#xff09;电子邮箱&#…

为什么需要自动化测试?自动化有哪些优势?

前言 自动化测试&#xff0c;最近些年可谓是大火。招聘上的要求也好&#xff0c;培训班的广告也罢&#xff0c;比比皆是&#xff0c;足以说明它在业内的火爆程度。 虽然说会写自动化测试并不能说明你就很牛批&#xff0c;但是你不会的话&#xff0c;那么很抱歉&#xff0c;你…

论文辅助笔记:TimeLLM

1 __init__ 2 forward 3 FlattenHead 4 ReprogrammingLayer

【图像特征点匹配】

图像特征点匹配 图像特征点匹配是计算机视觉中的一项关键技术,它涉及在两个或多个图像之间寻找并匹配具有独特属性的点,这些点被称为特征点。 立体视觉:通过匹配同一场景的不同视角图像中的特征点,可以重建场景的三维结构。物体识别:通过匹配物体表面的特征点,可以识别和…

Vue 介绍

【1】前端发展史 前端的发展史可简述为&#xff1a; 从最初的静态页面编写&#xff0c;依赖后端模板渲染逐步演化为通过JavaScript&#xff08;特别是Ajax技术&#xff09;实现前后端分离&#xff0c;使得前端能够独立地加载数据和渲染页面随后&#xff0c;Angular、React、Vu…