当前位置: 首页 > news >正文

day45—贪心-非递减数列(LeetCode-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

解决方案:

1、采用计数器判断次数,超过次数,即返回值

2、贪心策略:三个一起判断,进而统计次数

函数源码:

class Solution {
public:bool checkPossibility(vector<int>& nums) {int sum=0;for(int i=1;i<nums.size();i++){if(nums[i-1]>nums[i]){sum++;if(sum>=2) return false;if(i-2>=0 && nums[i-2]>nums[i]){nums[i]=nums[i-1];                }else nums[i-1]=nums[i];}}return sum<=1;}
};

http://www.mrgr.cn/news/99212.html

相关文章:

  • 【MySQL数据库入门到精通-02SQL分类以及DDL操作】
  • PFLM: Privacy-preserving federated learning with membership proof证明阅读
  • 【CentOs】构建云服务器部署环境
  • Ubuntu Linux 中文输入法默认使用英文标点
  • Redis save 和 bgsave 命令
  • Linux系统下docker 安装 MySQL
  • 深入理解 TCP 协议 | 流量、拥塞及错误控制机制
  • MATLAB 控制系统设计与仿真 - 37
  • javascript day4
  • 深度学习算法:从基础到实践
  • MFC文件-写MP4
  • 【更新中】【k8s系列6】RKE搭建Kubernetes集群
  • UE5 渲染视频
  • Golang errors 包快速上手
  • CentOS更换yum源
  • 红队专题-漏洞挖掘-代码审计-反序列化
  • 网络编程 - 4 ( TCP )
  • git提交实现文件或目录忽略
  • ZYNQ-GPIO外设
  • 从单模态到多模态:大模型架构演进与技术介绍