665. 非递减数列(中等)

665. 非递减数列

  • 1. 题目描述
  • 2.详细题解
  • 3.代码实现
    • 3.1 Python
    • 3.2 Java

1. 题目描述

题目中转:665. 非递减数列
在这里插入图片描述
在这里插入图片描述

2.详细题解

    判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列,一看到题目,不就是遍历判断有几处不为递减吗?三下五除二写下如下代码:

class Solution:def checkPossibility(self, nums: List[int]) -> bool:ans = 0for i in range(1, len(nums)):if nums[i] < nums[i-1]:ans += 1return ans <= 1

  结果在测试用例 [3,4,2,3]错误,分析该用例,发现仅4和2处不满足非递减,但不论是改变为[3,2,2,3]还是[3,4,4,3],均不能仅调整一次实现非递减数列。为什么会造成这样的情况呢?假定比较的两个索引为i,i+1,如果nums[i+1]<nums[i],此时不满足非递减,可以通过改变i或者i+1使之满足非递减,但需要注意的时,调整任一索引位置的元素后,应保证不破坏[0,i-1]区间的非递减性质,采用贪心策略,改变元素后,为尽量保持已有的非递减性质,因此i处的值最小可以改变为nums[i+1],i+1处的值最大可以改变为nums[i],那么i和i+1的值具体应该调整哪一个呢?区间[0, i-1]是非递减的,同时为了保证后续序列尽可能的非递减,因此i+1处的值越小越好,故首先考虑调整i处的值,但前提是满足nums[i+1]>=nums[i-1]以满足区间[0,i-1]的非递减(因为将i处的值变为了nums[i+1],为了保证非递减,i处的值应>=nums[i-1],而此时i处的值为nums[i+1])。
  具体实现的一点优化:当改变的次数大于1时已经能够判断不能实现了,此时可以结束循环遍历,因此使用了break。

3.代码实现

3.1 Python

class Solution:def checkPossibility(self, nums: List[int]) -> bool:N = len(nums)ans = 0for i in range(1, N):if ans > 1:breakif nums[i] < nums[i-1]:ans += 1# 到底是更新nums[i]还是nums[i-1]呢if i==1 or nums[i] >= nums[i-2]:nums[i-1] = nums[i]else:nums[i] = nums[i-1]return ans <= 1

在这里插入图片描述

3.2 Java

class Solution {public boolean checkPossibility(int[] nums) {int ans = 0;for (int i=1; i< nums.length; i++){if (ans > 1){break;}if (nums[i] < nums[i-1]){ans++;if (i == 1 || nums[i] >= nums[i-2]){nums[i-1] = nums[i];}else{nums[i] = nums[i-1];}}}return ans <= 1;}
}

在这里插入图片描述

  执行用时不必过于纠结,对比可以发现,对于python和java完全相同的编写,java的时间一般是优于python的;至于编写的代码的执行用时击败多少对手,执行用时和网络环境、当前提交代码人数等均有关系,可以尝试完全相同的代码多次执行用时也不是完全相同,只要确保自己代码的算法时间复杂度满足相应要求即可,也可以通过点击分布图查看其它coder的code

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

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

相关文章

科普计算机的相关知识【上】

一、计算机硬件 1. 主板&#xff08;Motherboard&#xff09; 定义&#xff1a;主板是计算机系统的核心&#xff0c;承载着CPU、内存和扩展卡等关键组件。 功能&#xff1a;主板负责连接和协调各个硬件组件&#xff0c;确保它们能够正常工作。 主要芯片&#xff1a;包括BIO…

Android之保存图片到相册之前兼容不同机型需要注意的配置

一、存储配置相关说明 1、权限配置 <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name"…

现实转虚拟:Video2Game引领3D互动体验

在当今数字化时代&#xff0c;虚拟环境的创建对于游戏开发、虚拟现实应用和自动驾驶模拟器等多个领域至关重要。然而&#xff0c;传统的虚拟环境创建过程不仅复杂而且成本高昂&#xff0c;通常需要专业人员和专业软件开发工具的参与。例如&#xff0c;著名的《侠盗猎车手V》以其…

升级海光dcu的飞桨版本@启智

dcu的调试任务启动之后&#xff0c;上不了网啊&#xff0c;导致无法升级python到3.10,进而无法升级飞桨版本.... sudo python -m pip install --pre paddlepaddle-dcu -i https://www.paddlepaddle.org.cn/packages/nightly/dcu/ Looking in indexes: https://www.paddlepaddle…

GUI编程02-布局管理器

流式布局 FlowLayout 东西南北中 BorderLayout 表格布局 GridLayout 流式布局 package YMP.GUI; ​ import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; ​ public class TestFlowLayout {public static void main(String[] args…

QSlider样式示例

参考代码&#xff1a; /********************QSlider横向滑动条样式**********************/ QSlider {background-color: rgba(170, 255, 255, 100); /* 设置滑动条主体*/ }QSlider::groove:horizontal {border: 1px solid #999999;height: 8px; /* 默认…

猫头虎分享已解决Bug || Uncaught TypeError: Cannot set property ‘innerHTML‘ of null**

猫头虎分享已解决Bug || Uncaught TypeError: Cannot set property ‘innerHTML’ of null** 原创作者&#xff1a; 猫头虎 作者微信号&#xff1a; Libin9iOak 作者公众号&#xff1a; 猫头虎技术团队 更新日期&#xff1a; 2024年6月6日 博主猫头虎的技术世界 &#x…

【InternLM实战营第二期笔记】07:OpenCompass :是骡子是马,拉出来溜溜

文章目录 课程实操 课程 评测的意义是什么呢&#xff1f;我最近也在想。看到这节开头的内容后忽然有个顿悟&#xff1a;如果大模型最终也会变成一种基础工具&#xff08;类比软件&#xff09;&#xff0c;稳定或可预期的效果需要先于用户感知构建出来&#xff0c;评测 case 就…

创新案例|创新实时零售模式,千亿时尚巨头Shein的全球扩张之路

SHEIN&#xff0c;一家估值千亿美元的快时尚电商独角兽&#xff0c;是全球增长最快的服饰平台。它通过数据和平台的双轮驱动&#xff0c;构建了全新的“实时零售”模式&#xff0c;实现了数据与商业的紧密衔接。同时&#xff0c;通过领导力和组织能力建设&#xff0c;打造了独特…

两句话让LLM逻辑推理瞬间崩溃!!

一道简单的逻辑问题&#xff0c;竟让几乎所有的LLM全军覆没&#xff1f; 对于人类来说&#xff0c;这个名为「爱丽丝梦游仙境」&#xff08;AIW&#xff09;的测试并不算很难—— 「爱丽丝有N个兄弟&#xff0c;她还有M个姐妹。爱丽丝的兄弟有多少个姐妹&#xff1f;」 稍加思考…

spring和Mybatis的动态sql

文章目录 九、动态sql9.1、if9.2、where9.3 trim9.4、choose、when、otherwise9.5、foreach9.6、sql片段 九、动态sql MyBatis框架的动态sql技术&#xff0c;是一种根据特定条件动态拼装sql语句的功能&#xff0c;它存在的意义是为了解决拼接sql语句字符串的痛点问题 9.1、if …

LabVIEW开发实验室超导体电流特性测试系统

本系统旨在为学校实验室提供一个基于LabVIEW的超导体电流特性测试平台&#xff0c;通过精确测量超导体在不同温度和电流条件下的电学特性&#xff0c;帮助学生和研究人员深入理解超导体的物理性质。本文将从背景、目标、工作原理、使用方法、操作流程和注意事项等方面详细介绍该…

汇编语言作业(六)

目录 一、实验目的 二、实验内容 三、实验步骤以及结果 四、实验结果与分析 五、实验总结 一、实验目的 掌握加减法运算指令对各状态标志位的影响及测试方法掌握汇编语言长整数的加法的操作方法 二、实验内容 对于以下几组数&#xff0c; 087H和034H 0C2H和5FH 0F3H和0F3H&am…

「网络原理」三次握手四次挥手

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;计网 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 三次握手&四次挥手 &#x1f349;连接管理&#x1f34c;三次握手&#x1f34c;意义&#x1f34c;四次挥手&#x1f34c;TCP 状态转换…

【web本地存储】storage事件,StorageEvent对象介绍

storage事件 Web Storage API 内建了一套事件通知机制&#xff0c;当存储区域的内容发生改变&#xff08;包括增加、修改、删除数据&#xff09;时&#xff0c;就会自动触发storage事件&#xff0c;并把它发送给所有感兴趣的监听者&#xff0c;因此&#xff0c;如果需要跟踪存…

Flink⼤状态作业调优实践指南:状态报错与启停慢篇

摘要&#xff1a;本文整理自俞航翔、陈婧敏、黄鹏程老师所撰写的大状态作业调优实践指南。由于内容丰富&#xff0c;本文分享终篇状态报错与启停慢篇&#xff0c;主要分为以下四个部分&#xff1a; 检查点和快照超时的诊断与调优 作业快速启动和扩缩容方案 总结 阿里云企业级…

creo学习一

设置好当前配置后&#xff0c;导出config配置文件&#xff0c;并覆盖掉此路径下的旧文件&#xff0c;使得新配置永久生效&#xff0c;这样每次打开软件都是新配置的设置&#xff1a; 系统颜色的导出&#xff1a; 打开版本的问题&#xff1a; 不能有弱尺寸&#xff1a; 注意&a…

分享一个 .NET Core Console 项目中应用 NLog 写日志的详细例子

前言 日志在软件开发中扮演着非常重要的角色&#xff0c;通常我们用它来记录应用程序运行时发生的事件、错误信息、警告以及其他相关信息&#xff0c;帮助在调试和排查问题时更快速地定位和解决 Bug。 通过日志&#xff0c;我们可以做到&#xff1a; 故障排除和调试&#xff…

【经验总结】ECU休眠后通过一帧NM报文唤醒ECU后在要求时间内通过第二帧NM报文需要唤醒网络

目录 前言 环境 1.需求描述 2.测试方法 3.完成需求的方法 4.原理详解 4.1 CanTrcv 接收到第一帧NM报文 4.2 EcuM接收到唤醒事件 4.3 CanTcv接收到第二帧NM报文 4.4 EcuM完成唤醒源校验 5. 总结 前言 关于CAN收发器参与下的ECU休眠唤醒问题我们已经写过很多文章,&l…

【C#/C++】C++定义一个返回uchar*的函数,调用函数时接收的数据异常

C定义一个返回uchar*的函数&#xff0c;调用函数时接收的数据异常 1、场景2、错误代码3.正确写法 1、场景 我是想实现一个图像畸变矫正的函数&#xff0c;由于相机的硬件原因&#xff08;相机内外参数&#xff0c;视野&#xff09;会导致我们取到的图有一定程度的畸变&#xff…