738.单调递增的数字 ,968.监控二叉树 +贪心总结

738.单调递增的数字 

示例:如将322变成成单调递增的最大数字即299,如3442变成3399

首先要将n转换成字符数组,

其次遍历数组进行两次判断:

第一次是遍历数字时求当前最大的数字max。然后只在max<arr[i]的时候才更新max和对应的下标idx

第二次要判断是否有arr[i]>arr[i+1],如果是那么要将arr[idx]减1,同时将之后的位数都替换成'9'

代码实现

class Solution {public int monotoneIncreasingDigits(int n) {//把n转换成字符串char[] arr = (n + "").toCharArray();int max=-1,idx=-1;//从前往后遍历数组for(int i=0;i<arr.length-1;i++){if(max<arr[i]){//更新max和idxmax=arr[i];idx=i;}if(arr[i]>arr[i+1]){arr[idx]-=1;for(int j=idx+1;j<arr.length;j++){arr[j]='9';}break;//跳出的是 for(int i=0;i<arr.length-1;i++)这一层循环}    }return Integer.parseInt(new String(arr));}
}

968.监控二叉树 (一刷跳过)

贪心总结

贪心简单题

分发饼干:对两个数组进行排序,遍历两个数组,每次如果当前饼干不能满足当前小孩胃口,那么就试试下一块饼干。

k次取反后最大化的数组和:由于数组中包含负数,我们优先对负数取反,全部负数取反后如果k>0就对最小正数取反,因为题目给出的元素范围是[-100,100]所以我们可以把数字都映射到一个number数组上

柠檬水找零:思路比较简单,因为顾客只会付给我5块,10块,20块,我们可以记录手头上有几张5块,几张10块,几张20块

贪心中等题

摆动序列:数组元素间的差值是正负交替的,说明是摆动序列。这道题我们首先定义preSum和curSum,前者为上上个元素和上个元素的差值,后者为上个元素和当前元素的差值,需要找到峰值也就是需要满足if (preDiff<=0&&curDiff>0)||(preDiff>=0&&curDiff<0),满足这个if的时候要更新preSum

738.单调递增的数字:这道题首先要将n转换成字符串,从前往后遍历数组,需要记录截止到遍历的位置时的最大值和最大值下标,方便的是当遇到不是递增的数字时,知道从哪个下标开始将后续字符全部变成字符9

122.买卖股票的最佳时机 II:任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。
53.最大子数组和:遍历数组,然后对两两元素做减法,如果减法的结果大于0,那么将这个结果累

加到sum中

134. 加油站:首先如果所有的rest[i]相加起来小于0,那么是永远不可能环绕成功的,我们用curSum来累加rest[i],一旦curSum小于0,哪就要更新起始位置到i+1,然后把curSum重新置为0

两个维度权衡问题

两个维度的问题要一个一个维度考虑,否则容易顾此失彼。

分发糖果:这道题要求相邻两个孩子中评分更高的孩子会获得更多机会,需要两次遍历,第一次从左往右遍历(右孩子如果比左孩子评分高,则右孩子糖果数在左孩子基础上加1),在第一次遍历的基础上再从右往左遍历(如果左孩子评分比右孩子评分高,那么左孩子糖果数取当前糖果数和右孩子糖果数+1二者中的较大者)

根据身高重建队列:首先根据身高降序,身高若相同就按ki升序。排完序后创建一个队列,我们需要按索引大小往队列中插入元素,在这道题中用到的分发que.add(index,value)是向指定下标插入元素value

贪心难题

这里的题目如果没有接触过,其实是很难想到的,甚至接触过,也一时想不出来,所以题目不要做一遍,要多练!

贪心解决区间问题

跳跃游戏:返回是否能够跳跃到数组的最右端,给定数组中每个元素代表能够跳跃的最大长度,有点类似滑动区间,每次在可达区间范围内寻找一个能跳最大距离的元素

跳跃游戏II:返回到达nums[n-1]的最小跳跃次数,这道题和上一道思路基本一致,需要找出在可达区间范围内能跳最大距离的元素,根据end与当前下标i是否相等来判断是否更新最远距离end和count++

用最少数量的箭引爆气球:我们要返回引爆索引气球的箭数量,首先需要根据xstart进行升序排序,如果两个气球没有重复部分count++,如果两个气球有重复部分,那么就需要更新右边气球的xend

435. 无重叠区间:返回 需要移除区间的最小数量,使剩余区间互不重叠 。首先需要根据数组第一位元素升序,例如排完序后:[1,2],[1,3],[2,3],[3,4].如果遇到有区间的情况就需要调整右边界

763.划分字母区间:题目要求我们要划分尽可能多的字段,同一个字母只能出现在一个字段,因此我们首先需要遍历字符串然后标记每个字符(字母)最后一次出现的下标,得到这个标记数组后,我们再次遍历字符串,idx的作用就是在这个范围内有不同的字母,但我们要一直保持是最远距离的字母的下标作为idx

56. 合并区间:这道题今天二刷,首先还是需要按照数组的第一位元素对数组进行升序,我们需要自定义个区间[start,rightmostBound],在遍历给定数组时把intervalsvals[i][0]和rightmostBound比较,如果前者大于后者说明没有重叠,那么将区间直接添加到结果集res中,否则需要何必跟区间,把rightmostBound更新为rightmostBound和intervalsvals[i][1]中的更大者

体会:

在这个过程中,很多贪心问题都需要先对数组进行排序,一般情况下都没什么思路,但是做过后再看一遍会好很多

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

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

相关文章

Ajax与jQuery

目录 Ajax是一种异步无刷新的技术 Ajax的优点&#xff1a; 可以无需刷新页面与服务器端进行通信允许根据用户事件来更新部分页面内容 Ajax的缺点&#xff1a; 没有浏览历史&#xff0c;不能回退存在跨域问题&#xff08;同源&#xff09;SEO&#xff08;搜索引擎优化&#x…

Lambda表达式第一版

1、匿名内部类 package com.lambda;import java.util.Arrays; import java.util.Comparator;public class LambdaDemo1 {public static void main(String[] args) {Integer[] arr {2, 3, 1, 5, 6, 7, 8, 4, 9};Arrays.sort(arr, new Comparator<Integer>() {Overridepub…

什么是伪类链(Pseudo-class Chaining)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Pseudo-class Chaining⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚…

(十九)大数据实战——Flume数据采集框架安装部署

前言 本节内容我们主要介绍一下大数据数据采集框架flume的安装部署&#xff0c;Flume 是一款流行的开源分布式系统&#xff0c;用于高效地采集、汇总和传输大规模数据。它主要用于处理大量产生的日志数据和事件流。Flume 支持从各种数据源&#xff08;如日志文件、消息队列、数…

Redis数据库持久化---RDB(Redis DataBase)概念与实操

一、概念 1redis提供了两种持久化的方式&#xff0c;分别是RDB&#xff08;Redis DataBase&#xff09;和AOF&#xff08;Append Only File&#xff09;。 RDB&#xff08;Redis DataBase&#xff09;&#xff1a;是在不同的时间点&#xff0c;将redis存储的数据生成快照并存…

C++ 学习系列 -- 智能指针 make_shared 与 make_unique

一 make_shared 1.1 make_shared 是什么&#xff1f; c 11 中 引入了智能指针 shared_ptr&#xff0c;以及一个模板函数 make_shared 来生成一个制定类型的 shared_ptr。 1.2 引入 make_shared &#xff0c;解决了什么问题&#xff1f; make_shared的引入&#xff0c;主…

【计算机硬件CPU】

【计算机硬件CPU】 1、计算机硬件的五大单元2、一切设计的起点&#xff1a; CPU 的架构3、精简指令集 &#xff08;Reduced Instruction Set Computer, RISC&#xff09;4、复杂指令集&#xff08;Complex Instruction Set Computer, CISC&#xff09;5、例题&#xff1a;最新的…

Vue框架--Vue中el和data的两种写法

data与el的2种写法 1.el有2种写法 (1).new Vue时候配置el属性。 (2).先创建Vue实例&#xff0c;随后再通过vm.$mount(#root)指定el的值。 2.data有2种写法 (1).对象式 (2).函数式 如何选择&#xff1a;目前哪种写法都可以&#xff0c;以后学习到组件时&#xff…

Selenium基础 — CSS选择器定位大全

1、css属性定位 css选择器策略示例说明#id#telA选择id"telA"的所有元素。.class.telA选择 class"telA”的所有元素。[属性名属性值][nametelA]除了id和class属性&#xff0c;其他属性的定位格式[attribute][target]选择带有target 属性所有元素。**选择所有元素…

一些测试知识

希望能起到帮助&#xff0c;博主主页&#xff1a; https://blog.csdn.net/qq_57785602/category_12023254.html?spm1001.2014.3001.5482 软件测试理论 测试的依据&#xff1a; 需求&#xff0c;规格说明&#xff0c;模型&#xff0c;用户需求等 什么是软件测试 描述一种来…

Python Opencv实践 - 矩形轮廓绘制(直边矩形,最小外接矩形)

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/stars.png") plt.imshow(img[:,:,::-1])img_gray cv.cvtColor(img, cv.COLOR_BGR2GRAY) #通过cv.threshold转换为二值图 ret,thresh cv.threshold(img_gray,…

手写Mybatis:第5章-数据源的解析、创建和使用

文章目录 一、目标&#xff1a;数据源的解析、创建和使用二、设计&#xff1a;数据源的解析、创建和使用三、实现&#xff1a;数据源的解析、创建和使用3.1 引入依赖3.2 工程结构3.3 数据源解析、创建和使用关系图3.4 事务管理接口和事务工厂3.4.1 事务的隔离级别3.4.2 定义事务…

ChatGPT⼊门到精通(3):ChatGPT 原理

OpenAI在2022年11⽉份发布ChatGPT&#xff0c;强⼤的⽂字对话、创意写作能⼒&#xff0c;全球掀起了⼀ 波AI浪潮。本⽂对ChatGPT的技术原理、厉害之处、可能的落地⽅向等⽅⾯进⾏了全⾯ 的解析&#xff0c;看完后会对ChatGPT有更深⼊的了解。 ⼀、前⾔ 2022年11⽉30⽇&#x…

libdrm全解析四十 —— 源码全解析(37)

接前一篇文章&#xff1a;libdrm全解析三十九 —— 源码全解析&#xff08;36&#xff09; 本文参考以下博文&#xff1a; DRM 驱动程序开发&#xff08;VKMS&#xff09; 特此致谢&#xff01; 前一篇文章讲解完了资源的释放流程中的munmap()和drmIoctl(DRM_IOCTL_MODE_DEST…

配置环境变量的作用

配置环境变量的作用 一般运行过程&#xff1a;寻找QQ.exe所在的目录&#xff0c;输入QQ.exe配置环境变量&#xff1a;把QQ所在的路径配给操作系统Path&#xff0c; 在任何路径下都能运行QQ.exe 举例&#xff1a; 定义变量&#xff1a;SCALA_HOME SCALA_HOME、JAVA_HOME 等这…

【论文精读】Learning Transferable Visual Models From Natural Language Supervision

Learning Transferable Visual Models From Natural Language Supervision 前言Abstract1. Introduction and Motivating Work2. Approach2.1. Creating a Sufficiently Large Dataset2.2. Selecting an Efficient Pre-Training Method2.3. Choosing and Scaling a Model2.4. P…

基于STM32的ADC采样及各式滤波实现(HAL库,含VOFA+教程)

前言&#xff1a;本文为手把手教学ADC采样及各式滤波算法的教程&#xff0c;本教程的MCU采用STM32F103ZET6。以HAL库的ADC采样函数为基础进行教学&#xff0c;通过各式常见滤波的实验结果进行分析对比&#xff0c;搭配VOFA工具直观的展示滤波效果。ADC与滤波算法都是嵌入式较为…

第十六章 ObjectScript - 日期和时间值

文章目录 第十六章 ObjectScript - 日期和时间值日期和时间值当地时间UTC Time日期和时间转换$H 格式的详细信息 第十六章 ObjectScript - 日期和时间值 日期和时间值 当地时间 要访问当前进程的日期和时间&#xff0c;可以使用 $HOROLOG 特殊变量。因此&#xff0c;在许多 …

【FreeRTOS】信号量的相关函数使用及示例解释

FreeRTOS中的信号量是一种用于任务间同步的机制。它可以用来实现任务之间的互斥访问共享资源或者等待某个事件发生。 文章目录 信号量类型1. 二进制信号量&#xff08;Binary Semaphore&#xff09;&#xff1a;2. 计数信号量&#xff08;Counting Semaphore&#xff09;&…

python in excel 如何尝鲜 有手就行

众所周知&#xff0c;微软在8月下旬放出消息python已入驻excel&#xff0c;可到底怎么实现呢。 今天我就将发布python in excel的保姆级教程&#xff0c;开始吧&#xff01; 获取office 365 账号 首先我们要有微软office365 这时候需要再万能的某宝去找一个账号&#xff0c;…