738.单调递增的数字;968.监控二叉树

news2024/11/23 13:47:49

贪心

  • 738.单调递增的数字
    • 思路:
    • 代码
  • 968.监控二叉树
    • 思路:如何放置,才能让摄像头最小的呢?

738.单调递增的数字

思路:

举例,数字:332,从前向后遍历的话,那么就把变成了329,此时2又小于了第一位的3了,真正的结果应该是299
最后代码实现的时候,也需要一些技巧,例如用一个flag来标记从哪里开始赋值9

代码

class Solution {
public:
    int monotoneIncreasingDigits(int N) {
        string str = to_string(N);//转换为字符串类型
        int flag = str.size();//flag用来标记赋值9从哪里开始,防止第二个for循环再flag没有被赋值的情况下执行
        for(int i = str.size() - 1; i > 0; i--) {
            if(str[i - 1] > str[i]) {
                flag = i;
                str[i - 1]--;
            }
        }
        for(int i = flag; i < str.size(); i++) {//对于101,通过上面的循环变为091,通过这个循环变为099
            str[i] = '9';
        }
        return stoi(str);
    }
};

代码二:放入数组,是倒叙

class Solution {
public:
    int monotoneIncreasingDigits(int n) {
         vector<int> count;
        if(n < 10)return n;
        while(n) {//放入的是倒叙数字
            count.push_back(n%10);
            n = n/10;
        }
        int flag =  -1;//默认值设置,放置第二个for循环在flag没有被赋值的情况下
        for(int i = 1; i < count.size(); i++) {
            if( count[i] > count[i -1]) {
                count[i]--;
                flag = i  - 1;         
        }
      }
      for(int i = flag ; i >= 0; i--) {
          count[i] = 9;
      }
      //解决101通过上面循环变为 091,再变为099的
    int sum = 0;
    for(int i = count.size() - 1; i >= 0; i--) {
          sum = sum *10 +count[i];
    }
    return sum;
    }
};

968.监控二叉树

在这里插入图片描述

思路:如何放置,才能让摄像头最小的呢?

1.摄像头都没有放在叶子节点上:摄像头可以覆盖上中下三层,如果把摄像头放在叶子节点上,就浪费的一层的覆盖。
2.此时,大体思路就是从低到上,先给叶子节点父节点放个摄像头,然后隔两个节点放一个摄像头,直至到二叉树头结点。
3难点:二叉树的遍历用后序遍历
4.状态转移公式,不要和动态规划里面的状态转移公式混淆
5.遍历空节点是那个状态?

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

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

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

相关文章

mysql密码字段类型

数值 mysql 的数值数据类型可以大致划分为两个类别&#xff0c;一个是整数&#xff0c;另一个是浮点数或小数。 许多不同的子类型对这些类别中的每一个都是可用的&#xff0c;每个子类型支持不同大小的数据&#xff0c;并且 MySQL 允许我们指定数值字段中的值是否有正负之分(U…

【owt】WebrtcNode, subscribe流程

subscribe流程 1. AmqpClient - New message received 2023-04-26T21:54:18.415 - DEBUG: AmqpClient - RpcServer New message received {method: subscribe,args: [b149e44bb10d4e91bd162a8c6806ae7b,webrtc,{transportId: b149e44bb10d4e91bd162a8c6806ae7b,tracks: [Arr…

C4网络技术挑战赛 智慧园区方案分析

添加链接描述 智慧园区网络 市场现状: 网络与应用系统多厂商、多平台、多系统,导致IT部门管理运维复杂&#xff0c;效率低下. 统一运维管理&#xff1f; 无线网络与物联网的双网合一&#xff1f; ps&#xff1a; 无线网络(英语:Wireless network)指的是任何型式的无线电计…

【Mysql数据库从0到1】-入门基础篇--mysql基本使用

【Mysql数据库从0到1】-入门基础篇--mysql基本使用 &#x1f53b;一、Mysql5.7 VS Mysql8.0 详解1.1 ⛳字符编码1.2 ⛳用户的创建与授权1.3 ⛳ 认证插件1.4 ⛳ 隐藏索引1.5 ⛳ 持久化设置1.6 ⛳ 通用表表达式&#xff08;Common Table Expressions&#xff09;1.7 ⛳ 性能提升1…

redis缓存单体服务测试本地锁失效问题

测试1&#xff1a;锁释放之后向redis缓存存入数据 //TODO 产生堆外内存溢出 OutOfDirectMemoryError//gulimall.com查询分类Overridepublic Map<String, List<CategoryLevel2Vo>> getCatelogJson() {/*** 问题 &#xff1a;解决办法* 1.缓存穿透 高并发情况下查询缓…

Java学习方式分享

哈喽&#xff0c;大家好呀&#xff0c;好久不见&#xff01;咱依然是那个腼腆害羞内向社恐文静、唱跳rap篮球都不大行的【三婶er】 坦白地说&#xff0c;今天是偶然看到C站这个活动的&#xff0c;这个主题我颇有感触&#xff0c;刚学java时的场景&#xff0c;历历在目。所以今天…

ChatGPT常见的报错解决方法(全网最全解决方法)

因为最近在使用ChatGPT的过程中&#xff0c;时常会出现一些错误提示&#xff0c;为了方便自己快速解决问题&#xff0c;所以也搜集了一些其他博主的解决方法&#xff0c;以下是整理的内容。 目录 1、拒绝访问 2、Access denied错误 3、We have detected suspicious 错误 4…

leetcode_19_相同的树

bool isSameTree(struct TreeNode* p, struct TreeNode* q){if(pNULL && qNULL)return true;//其中一个为空if(pNULL || qNULL)return false;//都不为空,且首节点的值不相等if(p->val ! q->val)return false;//p和q的值相等&#xff0c;分别比较左子树和右子树re…

如何使用debugHunter发现隐藏调试参数和Web应用程序敏感信息

关于debugHunter debugHunter是一款针对Web应用程序隐藏调试参数和敏感信息的识别扫描工具,该工具本质上是一个Chrome扩展,可以帮助广大研究人员扫描目标Web应用程序/网站以查找调试参数,并在发现了包含修改响应的URL时发送通知。该扩展利用了二分查找算法来有效地确定导致…

《基于Linux物联网综合项目》常见问题汇总fae

关于该课程说明 1&#xff09;本课程目标 通过web浏览器访问服务器&#xff0c;实现登录、注册、数据库操作、远程操控硬件、采集环境信息、远程监控、拍照、图片显示等功能。 将单片机、linux、html、摄像头、数据库等知识点融入到一个项目中。 2&#xff09;什么群体适合学…

JVM 虚拟机栈介绍

一、虚拟机栈&#xff08;VM Stack&#xff09; 1.1&#xff09;什么是虚拟机栈 虚拟机栈是用于描述java方法执行的内存模型。 每个java方法在执行时&#xff0c;会创建一个“栈帧&#xff08;stack frame&#xff09;”&#xff0c;栈帧的结构分为“局部变量表、操作数栈、动态…

JavaScript实现以数组方式输入数值,输出最大的数的代码

以下为实现以数组方式输入数值&#xff0c;输出最大的数的程序代码和运行截图 目录 前言 一、以数组方式输入数值&#xff0c;输出最大的数 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择&#xff0c;您可以在目录里进行快速查找…

基于html+css的图展示107

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

职业规划-论软件迭代变化和个人知识更新

职业规划-论软件迭代变化和个人知识更新 目录概述需求&#xff1a; 设计思路实现思路分析1.历程2.第一份工作3.后来4.BK毕业5.实习 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardnes…

冈萨雷斯DIP第6章知识点

6.1 彩色基础 区分不同颜色的特性&#xff1f; 区分不同颜色的特性通常是亮度、色调和饱和度。 亮度&#xff1a;亮度体现的是发光强度的消色概念&#xff08;不包含颜色的概念&#xff09;色调&#xff1a;表示被观察者感知的主导色&#xff0c;通常是混合光波中与主波长相关的…

深入理解设计原则之里氏替换原则(LSP)【软件架构设计】

系列文章目录 C高性能优化编程系列 深入理解软件架构设计系列 深入理解设计模式系列 高级C并发线程编程 LSP&#xff1a;里氏替换原则 系列文章目录1、里氏替换原则的定义和解读2、里氏替换原则可以用于哪些设计模式中&#xff1f;3、如何使用里氏替换原则来降低代码耦合度&a…

《微服务架构设计模式》第一章 逃离单体地狱

内容总结自《微服务架构设计模式》 逃离单体地狱 一、单体架构1、好处2、弊端 二、微服务架构1、定义2、好处3、弊端 三、模式的概念1、定义2、构成3、引申微服务 一、单体架构 1、好处 易于对应用程序进行大规模的更改&#xff1a;可以更改代码和数据库模式&#xff0c;然后…

华为OD机试真题 Java 实现【单词倒序】【2023Q1 100分】,附详细解题思路

一、题目描述 输入单行英文句子&#xff0c;里面包含英文字母&#xff0c;空格以及.? 三种标点符号&#xff0c;请将句子内每个单词进行倒序&#xff0c;并输出倒序后的语句。 二、输入描述 输入字符串S&#xff0c;S的长度1≤N≤100。 三、输出描述 输出逆序后的字符串 …

有道云笔记也挺速度,也搞了个AI助手,能抗衡Notion AI?

前言 小编平时做技术笔记的时候&#xff0c;经常使用到的软件就是有道云笔记&#xff0c;最近无意间发现&#xff0c;笔记编写的页面中&#xff0c;竟然集成了AI助手&#xff01;网易有道可真是低调&#xff01;毕竟最近AI圈大火&#xff0c;竟然没有蹭一波热度&#xff0c;直…

Spring Security 核心解读(二)自定义认证授权体系

自定义认证授权体系 概述自定义认证定义登录接口配置 Security 放行策略定义通用登录过滤器并将其配置到 Security 过滤器链上定义资源接口在 Security 授权设置中放行启动项目 结尾 概述 以前使用Spring Security 时&#xff0c;基本都是按部就班参考文档开发。 基本是从 Use…