刷爆力扣之非递减序列

news2024/9/20 8:42:23

刷爆力扣之非递减序列

HELLO,各位看官大大好,我是阿呆 🙈🙈🙈

今天阿呆继续记录下力扣刷题过程,收录在专栏算法中 😜😜😜

请添加图片描述

该专栏按照不同类别标签进行刷题,每个标签又分为 Easy、Medium、Hard 三个等级 👊👊👊

本部分所有题目均来自于LeetCode 网,并于每道题目下标明具体力扣网原题链接 🏃🏃🏃

OK,兄弟们,废话不多直接上题,冲冲冲 🌞🌞🌞


一 🏠 题目描述

665. 非递减数列

给你一个长度为 n 的整数数组 nums ,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。

我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]

示例 1:

输入: nums = [4,2,3]
输出: true
解释: 你可以通过把第一个 4 变成 1 来使得它成为一个非递减数列。

示例 2:

输入: nums = [4,2,1]
输出: false
解释: 你不能在只改变一个元素的情况下将其变为非递减数列。

提示:

  • n == nums.length
  • 1 <= n <= 104
  • -105 <= nums[i] <= 105

二 🏠破题思路

2.1 🚀 关键信息

解决问题第一步,当然先提取题目字面上的关键信息 😎😎😎

① 非递减数列,对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1] = 两两比较 🌹🌹🌹

② 在 最多 改变 1 个元素的情况下,整数数组 nums 能否变成非递减数列 = 循环跳出计数统计大于 1 🌸🌸🌸


提取完题目中的关键信息后,直接进入第二阶段,思路整理 😃😃😃


2.2 🚀 思路整理

正向遍历法

依据上述关键信息知,在数组遍历过程中两两比较,直至到达末尾或计数统计大于一结束循环

对于两两比较,若 nums[i - 1] > nums[i] 说明前者大于后者,不满足非递减数列,将计数统计加加

此时考虑更改 nums[i - 1]nums[i] 的值,分为以下两种情况

① 当 i >= 2 && nums[i - 2] > nums[i] 时,即 nums[i] 小于前前者的数值时,只能将 nums[i] 更改才可满足非递减数列的条件

② 其余情况,则只需更改 nums[i - 1] 即可满足非递减数列的条件

注:在更改元素时,将优先把元素更改至可选范围内的最小,以尽可能满足非递减数列的条件 🌺🌺🌺


整理完解题思路后,直接进入第三阶段,代码实现 😃😃😃


三 🏠 代码详解

3.1 🚀 代码实现

按照我们刚才的破题思路,直接代码走起来 👇👇👇👇

bool checkPossibility(vector<int>& nums) {
        size_t len = nums.size(); //获取数组长度
        size_t count = 0; //计数统计

        for (size_t i = 1; i < len && count < 2; ++i) { //遍历数组
            if (nums[i - 1] > nums[i]) { //两两比较, 若前者大于后者
                ++count; //将计数统计加加
                if (i >= 2 && nums[i - 2] > nums[i]) nums[i] = nums[i - 1]; //若第三个数小于第一个数,则必须改变第二个数
                else nums[i - 1] = nums[i];
            }
        }

        return count <= 1; //判断计数统计是否符合条件
    }

3.2 🚀 细节解析

看完 👀👀👀 全注释版的代码实现后,相信看官大大对整体逻辑已经是大写的 OK 了 😃😃😃

那么我们挖掘上述实现的晦涩细节 😖😖😖 进行解析,直接开干,走起来 👇👇👇👇

i < len && count < 2 //循环结束的条件

在数组遍历过程中两两比较,直至到达末尾或计数统计大于一结束循环 🐌🐌🐌


if (i >= 2 && nums[i - 2] > nums[i]) ...

在数组遍历过程中两两比较,若前者大于后者需再进行上述 if 。其意义当前值已经小于上一个值,判断当前值是否小上上一个值,因在更改元素时,需将优先把元素更改至可选范围内的最小 🐳🐳🐳


四 🏠 心路历程

为方便各位看官大大了解博主真实刷题过程,我把当时状态纯纯真实还原,记录在心路历程这一小节,不感兴趣的小伙伴可以直接跳过哈

博主在第一阶段提取 🚀 关键信息没有问题,在第二阶段 🚀 思路整理也没有问题(上述实现和题解博主原创)


五 🏠 结语

身处于这个浮躁的社会,却有耐心看到这里,你一定是个很厉害的人吧 👍👍👍

如果各位看官大大觉得文章有帮助的话,别忘了点赞 + 关注哦,你们的鼓励就是我最大的动力

博主还会不断更新更优质的内容,加油吧!技术人! 💪💪💪

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

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

相关文章

电磁场几何和衍射理论的统一

在物理光学中&#xff0c;我们使用麦克斯韦方程组处理电磁场。为了快速求解该方程组&#xff0c;我们将不同的麦克斯韦算子结合在一个非序列场追迹概念中。进一步的&#xff0c;快速物理光学概念的支柱是&#xff1a;&#xff08;1&#xff09;尽可能在k域求解麦克斯韦方程组。…

深入理解Linux网络技术内幕(十一)——帧的传输

文章目录前言传输的开启和关闭设备调度以准备传输队列规则接口qdisc_restart函数dev_queue_xmit函数有队列设备无队列设备处理NET_TX_SOFTIRQ: net_tx_action看门狗定时器前言 “传输”这一术语用于离开系统的帧&#xff0c;也许是因为被系统传送出去&#xff0c;或者是因为被…

火山引擎 DataTester:如何用 A/B 测试做产品增长?

技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 随着如今越来越高的获客成本&#xff0c;用户拉新变得不再容易&#xff1b;而且由于获客成本的增高&#xff0c;让用户留存也变得更加重要。同时&#xff0c;一个产品的…

【C++】list的模拟实现+迭代器的设计思维

目录1.认识STL中的list2.迭代器的设计思维2.1 迭代器的定义2.2 迭代器的底层结构3.list的模拟实现3.1 list的节点3.2 list的迭代器3.3 list类4.list和vector的比较1.认识STL中的list &#x1f4a8;相比于vector简单的连续线性结构&#xff0c;list就稍显复杂了。 &#x1f4a8;…

用细节问题撬动自我进化:首届雪浪算力开发者大赛来了!

12月2日&#xff0c;首届【雪浪算力开发者大赛】在无锡雪浪小镇正式揭幕&#xff0c;并由此开启了新一轮智能制造新生力量的博弈。本次大赛不仅将工业界开发者与创新企业置于聚光灯下&#xff0c;也是雪浪算力中心向社会公众展示其强大计算能力与支撑能力的震撼大秀。 在疫情威…

【关于Spring MVC框架中的@RequestBody】

关于Spring MVC框架中的RequestBody 在Spring MVC框架中&#xff0c;可以在POJO类型的请求参数前添加RequestBody。 当服务器端接收请求参数时&#xff0c;使用了RequestBody注解&#xff0c;客户端提交的请求参数必须是对象格式的&#xff01; 如果客户端提交的请求参数不是…

Vue中使用vue-video-player插件播放本地mp4视频文件

场景 若依前后端分离版手把手教你本地搭建环境并运行项目&#xff1a; 若依前后端分离版手把手教你本地搭建环境并运行项目_霸道流氓气质的博客-CSDN博客_前后端分离项目本地运行 在上面搭建项目的基础上&#xff0c;先实现了播放rtmp视频流 Vue中使用vue-video-player和vi…

Unity Animancer插件(一)基本使用

Animancer是什么&#xff1f;资源商店主页 一、快速播放 我们来通过Animancer实现一个最基本的动画播放效果。 首先创建一个脚本PlayAnimationOnEnable&#xff0c;编写如下代码 public AnimancerComponent animancer; public AnimationClip clip;private void OnEnable() …

pinia 持久化存储

pinia刷新数据持久化解决方案 无论是使用vuex 还是pinia都会面临一个问题&#xff1a;页面刷新&#xff0c;状态数据丢失的问题&#xff1b; 为了解决数据状态持久化问题&#xff0c;可以考虑使用插件 pinia-plugin-persistedstate 目录 安装pinia 并引入使用 npm install pin…

CCES软件如何来对ADI的SHARC DSP进行Flash的编程和烧写

如何做 Flash 烧写并实现脱机运行&#xff0c;其实我在之前的文章里有讲过&#xff0c;就可以用 Visual DSP来做&#xff0c;鼠标 点几下&#xff0c;非常简单。但是很多客户用的是 21569、21565这一类的SHARC DSP&#xff0c;不能再用 VDSP 来做烧写了&#xff0c;所以我想了 …

留学Essay写作怎么积累更多词汇量?

大部分留学生们都会感觉Essay挺难写作的&#xff0c;然而这其实是自身平时积累的不够多。当然&#xff0c;还有其他的正确方法&#xff01;高分的Essay都是平时练习出来的&#xff0c;所以我们需要在平时多注意收集一些相关的写作知识。下面是一些常用的Essay写作词汇&#xff…

5 年经验年薪百万,一位阿里 P8 分享自己的成长干货

今天这篇文章&#xff0c;我前后读了 3 遍&#xff0c;主人公是阿里最年轻的 P8 之一&#xff0c;工作五年连升三级&#xff0c;他在一次采访中分享了自己的成长经历和职场心得&#xff0c;非常接地气&#xff0c;我们整理了 一下&#xff0c;真诚地推荐给每一个渴望成长和进步…

基于主成分分析的支持向量机入侵检测系统

基于主成分分析的支持向量机入侵检测系统学习目标&#xff1a;学习内容&#xff1a;A. 数据集分析B. 主成分分析 (PCA)--降维C. 支持向量机 (SVM)核函数数据集预处理--转换数据集预处理 --特征缩放算法过程核函数对比总结不足参考论文申明&#xff1a; 未经许可&#xff0c;禁止…

ESB产品Oracle数据库升级说明

ESB企业服务总线平台作为支撑企业综合集成的产品&#xff0c;在应用集成、数据集成、数据治理等解决方案都发挥着非常重要的作用。随着产品和解决方案的不断优化和升级&#xff0c;ESB企业服务总线平台功能需要逐步进行完善&#xff0c;不断提升产品功能的完备性、易用性和全面…

Github最新霸榜,Alibaba架构师手写的分布式系统核心原理手册

前言&#xff1a; 分布式的重要性就不需要我再强调了吧&#xff0c;它现在已经是大厂面试的“常驻嘉宾”了 前几天有粉丝在后台跟我吐槽&#xff1a;鑫哥&#xff0c;我觉得现在的风气真的变了&#xff0c;之前只觉得网上的情况是个例&#xff0c;结果自己就遇到了很多次&…

东方甄选、交个朋友迎头而上,云集不进则退

配图来自Canva可画 社交电商、会员电商、精选电商&#xff0c;多个定位描绘出云集的“求变史”。 2015年前后&#xff0c;社交电商概念崛起&#xff0c;拼多多靠“砍一刀”、“拼团”快速成长&#xff0c;云集也学着借助社交平台微信的传播途径&#xff0c;通过社交互动、用户…

【论文笔记】DEEP FEATURE SELECTION-AND-FUSION FOR RGB-D SEMANTIC SEGMENTATION

论文 题目&#xff1a;DEEP FEATURE SELECTION-AND-FUSION FOR RGB-D SEMANTIC SEGMENTATION 收录于&#xff1a;ICME 2021 论文&#xff1a;Deep Feature Selection-And-Fusion for RGB-D Semantic Segmentation | IEEE Conference Publication | IEEE Xplore [2105.04102]…

[附源码]Python计算机毕业设计Django学生宿舍维修管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

仿QQ音乐(HTML+CSS)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

[安装] Doris集群搭建环境

参考文献 参考链接 推荐指数 Doris集群安装部署&#xff08;详细&#xff09; [火][火][火][火][火] Doris学习笔记之数据表的创建 [火][火][火] doris官网0.15版本的安装部署 [火][火][火][火][火] Doris0.15升级到1.1.1 [火][火][火][火][火] [说明] Doris使用…