代码随想录算法训练营第32天—贪心算法06 | ● *738.单调递增的数字 ● *968.监控二叉树 ● 总结

news2024/9/24 19:22:51

*738.单调递增的数字

https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.html

  • 考点
    • 贪心算法
  • 我的思路
    • 暴力解法
  • 视频讲解关键点总结
    • 几个关键点
    • 一,如果当前数位小于上一数位,如87,则应直接将上一数位减1,当前数位设为9,如79,因为这是满足题意的最大结果
    • 二,如果直接在循环过程中进行上述修改操作,将会在某些情况下发生遗漏,如1000将被修改为900而不是999,1323将被修改为1293而不是1299;因此,应在循环过程中仅将不满足要求的上一数位减1,而记录最靠前的那个需要改为9的数位,并在循环之后将该数位之后全部改为9(这样才满足递增的要求)
  • 我的思路的问题
    • 时间复杂度超限
  • 代码书写问题
    • 直接修改字符串变量是不允许的,因此可以采用切片之后相加的方式生成新字符串
  • 可执行代码
class Solution:
    def monotoneIncreasingDigits(self, n: int) -> int:
        n = str(n)
        index = len(n)
        for i in range(len(n) - 1, 0, -1):
            if int(n[i]) < int(n[i - 1]):
                index = i
                n = n[:i - 1] + str(int(n[i - 1]) - 1) + n[i:]
        n = n[:index] + ('9' * (len(n) - index))
        return int(n)

*968.监控二叉树

https://programmercarl.com/0968.%E7%9B%91%E6%8E%A7%E4%BA%8C%E5%8F%89%E6%A0%91.html

  • 考点
    • 贪心算法
    • 二叉树
  • 我的思路
    • 无思路
  • 视频讲解关键点总结
    • 关键点如下:
    • 一、怎么放摄像头?应从底向上放(对应二叉树的后序遍历),因为从叶子节点向上遍历才能尽可能利用摄像头的上下覆盖特性,如果从根节点开始,由于根节点数目远少于叶子节点,其所使用的摄像头数目将超过从下向上遍历
    • 二、怎么判断当前节点是否要放摄像头?利用子节点传上来的状态进行判断
      • 状态0,子节点没有被摄像头覆盖
      • 状态1,子节点有摄像头
      • 状态2,子节点被摄像头覆盖
      • 若两个子节点均被摄像头覆盖,则当前节点应返回状态0
      • 若两个子节点有至少其一没有被覆盖,则当前节点应返回状态1,同时结果计数加1
      • 若两个子节点有至少其一有摄像头,则当前节点应返回状态2
    • 三、如果找到了空节点,应该将其设置为什么状态?空节点应设置为状态2,这样当前节点才会返回状态0
    • 四、按照如上思路遍历完二叉树后,根节点有可能没有被摄像头覆盖,此时应判断二叉树的递归遍历函数返回值是否为0(即根节点为状态0),如果是,则应结果计数加1
  • 我的思路的问题
    • 无思路
  • 代码书写问题
    • 这里的结果变量不能直接定义一个整型变量,因为整型变量在python里为不可变类型,因此在递归遍历时对其进行的修改并没有改变原始变量的值,而是在递归函数里创建了一个新的局部变量,所以使用列表这种可变类型来进行代替
  • 可执行代码
class Solution:
    def traversal(self, root, result):
        if root is None:
            return 2
        condition1 = self.traversal(root.left, result)
        condition2 = self.traversal(root.right, result)
        if condition1 == 2 and condition2 == 2:
            return 0
        elif condition2 == 0 or condition1 == 0:
            result[0] += 1
            return 1
        elif condition2 == 1 or condition1 == 1:
            return 2

    def minCameraCover(self, root: Optional[TreeNode]) -> int:
        result = [0]
        if self.traversal(root, result) == 0:
            result[0] += 1
        return result[0]

贪心算法总结

贪心算法总结

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

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

相关文章

redis06 redis事务

思维草图 redis事务认识 redis事务是一个单独的隔离操作&#xff0c;事务中的所有命令都会序列化、按顺序地执行&#xff0c;事务在执行的过程中&#xff0c;不会被其他客户端发送来的命令请求所打断。 redis事务的主要作用就是串联多个命令防止别的命令插队。 Multi、Exec、…

AWS 认证报名考试流程

AWS认证的考试包括&#xff0c;可以申请线上或者线下考试。 考试类型 线上&#xff1a; 优点&#xff1a;方便快捷无需通勤&#xff0c;随时约随时考&#xff0c;基本上每天都可以 缺点&#xff1a;对环境要求较高&#xff0c;屋子里只能有自己&#xff0c;而且不能有其他声音…

【Linux】Linux C编程

gcc编译器 gcc [options] [filenames] 其中&#xff0c;options是编译器所需要的选项参数&#xff0c;filenames是文件名。 gcc编译过程 C语言编译过程一般可以分为预处理、编译、汇编、链接四个步骤。 1.预处理阶段 预处理阶段主要处理宏定义和include&#xff0c;并进行语…

腾轩科技传媒讲解企业怎样做整合营销推广才有效果

当今信息爆炸的时代&#xff0c;企业如何才能从浩渺的市场中脱颖而出&#xff0c;触达目标消费者&#xff0c;实现品牌与销售的双增长&#xff1f;腾轩科技传媒讲解的整合营销推广正是解决这一问题的关键所在。它不仅仅是一种营销策略&#xff0c;更是一种全新的思维方式&#…

全面分析vcruntime140_1.dll无法继续执行代码的处理方法,3分钟修复vcruntime140_1.dll

如果系统弹出一个错误警告&#xff0c;指出“vcruntime140_1.dll无法继续执行代码”&#xff0c;这通常意味着您的Windows系统中缺失了一个关键的文件&#xff0c;或者该文件已损坏。​vcruntime140_1.dll​是随Visual C Redistributable for Visual Studio 2015, 2017和2019提…

购物车下单实现思路【vue】

文章目录 1、购物车1.1 使用pinia来存储购物车的状态1.2 用户将商品加入购物车的时候 2、点击结算按钮3、封装支付 1、购物车 在购物车页面会有一个点 提示当前购物车内商品的数量购物车内商品的展示购物车内商品的选中 1.1 使用pinia来存储购物车的状态 state: () > ({//…

web游戏-飞机大战

H5小游戏源码、JS开发网页小游戏开源源码大合集。无需运行环境,解压后浏览器直接打开。有需要的,私信本人,发演示地址,可以后再订阅,发源码,含60+小游戏源码。如五子棋、象棋、植物大战僵尸、开心消消乐、扑鱼达人、飞机大战等等 <!DOCTYPE html> <html lang=&q…

lowcode-engine快速开始

https://lowcode-engine.cn/site/docs/guide/quickStart/intro 安装node 需要node 14.17.0 pnpm安装多个node教程 pnpm env add --global 14.17.0下载demo deomo地址 安装依赖包 切换nodejs版本 pnpm env use --global 14.17.0 node -v切换到demo-general&#xff0c;安…

学习java第一天(下载并配置环境+写第一个java程序)

一.安装 1.下载 直接去官网上选择与你电脑符合的版本下载 官网链接Java Archive Downloads - Java SE 8u211 and later &#xff08;拿我的为例 Windows x64版本&#xff09; ​ 2.然后安装好exe&#xff08;要让自己知道在哪&#xff09; 3.配置环境 大佬链接&#xff1…

特种车日常检修VR虚拟互动培训软件节省大量的教学资源和成本

随着科技的不断发展&#xff0c;虚拟现实(VR)技术已经逐渐融入了各行各业&#xff0c;其中特种车辆的养护教学也从中受益匪浅。VR虚拟仿真教学在特种车辆养护领域的应用&#xff0c;不仅创新了教学方式&#xff0c;还为提高学员的学习效果和实际操作技能提供了强有力的支持。 特…

【C++】STL简介 | STL六大组件 | string类 | string类对象操作

目录 1. 什么是STL 2. STL的版本 3. STL的六大组件 4. STL的缺陷 5. 引出string类 6. 标准库中的string类 6.1 string类简介 6.2 string类对象的构造 6.3. string类对象的容量 6.4. string类对象的遍历 6.5. string类对象的修改 6.6. string类非成员函数 6.7. vs…

数控机床对滚珠丝杆的要求

随着数控机床高速高精度的发展需求&#xff0c;滚珠丝杆作为数控机床的主要进给功能部件之一&#xff0c;为确保机床传动精度&#xff0c;其选型及安装显得尤为重要&#xff1b;那么&#xff0c;数控机床对滚珠丝杆有什么要求呢&#xff1f; 1、精度保持性&#xff1a;滚珠丝杆…

《汇编语言》 第3版 (王爽)实验6解析

第7章 实验6解析 &#xff08;1&#xff09;.编程&#xff0c;完成问题7.9中的程序。 问题7.9 编程&#xff0c;将datasg段中每个单词的前4个字母改为大写字母。 assume cs:codesg,ss:stacksg,ds:datasgstacksg segment ;开辟了栈段空间&#xff0c;容量为16个字节dw 0,0,0,0…

selenium爬取房价收入比可视化

数据来源&#xff1a;聚合数据 from selenium import webdriver from bs4 import BeautifulSoup import csv from selenium import webdriver from fake_useragent import UserAgent import random import subprocess from selenium import webdriver from selenium.webdrive…

面试高频率问答题目

索引&#xff1a; 主键索引&#xff1a;表的id &#xff08;唯一 且 不能为空&#xff09; 唯一索引&#xff1a;表User 假设有account 字段 &#xff0c;用户名不重复 &#xff08;唯一 可以为空&#xff09; 复合索引&#xff1a;where() 的条件 用户名&#xff0c;密码 …

国创证券|黄金概念发力拉升,金贵银业两连板,山东黄金等走高

黄金概念5日盘中发力拉升&#xff0c;到发稿&#xff0c;金贵银业涨停&#xff0c;玉龙股份涨近9%&#xff0c;中润资源涨近6%&#xff0c;山东黄金、银泰黄金涨超3%。 值得注意的是&#xff0c;金贵银业已接连两个买卖日涨停&#xff0c;公司3日晚间公告&#xff0c;根据证券…

大气颗粒物与VOCs PMF源解析:环保行业的新利器

在现今日益严峻的环境问题中&#xff0c;大气颗粒物和臭氧污染尤为突出&#xff0c;它们不仅深刻影响着全球气候和生态环境&#xff0c;更对人体健康构成了严重威胁。为了有效应对这一挑战&#xff0c;我们首先需要深入了解颗粒物和臭氧的来源&#xff0c;特别是臭氧的前体物之…

#QT(智能家居界面上-图片插入)

1.IDE&#xff1a;QTCreator 2.实验 3.记录 (1)添加图片文件&#xff08;图片资源文件&#xff0c;PNG格式为佳&#xff09; &#xff08;2&#xff09;将图片放入工程文件夹 &#xff08;3&#xff09;按如下步骤将图片加入到工程中&#xff08;pic.qrs文件夹&#xff09; &…

CSS实现水波球

使用CSS实现水波球效果&#xff08;单个的水波球&#xff09; 效果如下&#xff1a; <template><div class"indicator" ref"indicator" :style"border-color:${borderCol}"><span class"text">{{ completion }}%…

云桥通+跨国游戏:SDWAN组网解析跨国游戏企业的成功案例

运气通曾服务过一家国际知名的游戏开发公司C&#xff0c;C公司的游戏广受年轻人欢迎&#xff0c;所以&#xff0c;他C公司也顺理成章地拥有全国玩家基础。由于游戏的在线特性和全球用户分布&#xff0c;C公司面临着跨国游戏服务器之间的苦恼——稳定问题和网络连接问题。他们希…