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

LeetCode刷题---数组---665

非递减数列

665. 非递减数列 - 力扣(LeetCode)

题目:

给你一个长度为 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
自己的思路和代码:
思路:

        很简单的问题,首先就是遍历一遍数组,找到第一个不满足条件的地方。无非就是两种情况,让左边等于右边或者是让右边等于左边。这样修改之后,重新遍历一遍的数组,观察一下有没有不满足条件的地方。如果有的话就返回false,否则返回true。

代码:
bool checkPossibility(int* nums, int numsSize) {
    int pointer, left, right; 
    bool result = true;
    for(int i=0; i<numsSize-1; i++) {
        if(nums[i]>nums[i+1]) {
            pointer = i;
            left = nums[i];
            right = nums[i+1];
            break;
        } else {
            pointer = i;
        }
    }
    if(pointer==(numsSize-1)) {
        return true;
    } else {
        nums[pointer] = right;
        for(int i=0; i<numsSize-1; i++) {
            if(nums[i]>nums[i+1]) {
                result = false;
            }
        }
        if(result) {
            return result;
        } else {
            result = true;
            nums[pointer+1] = left;
            for(int i=pointer+1; i<numsSize-1; i++) {
                if(nums[i]>nums[i+1]) {
                    result = false;
                }
            }
        }
        return result;
    }
}


http://www.kler.cn/a/540459.html

相关文章:

  • 私有属性和方法(python)
  • 循环神经网络学习01——transformer:输入部分-嵌入层位置编码
  • C语言基础第04天:数据的输出和输出
  • at coder ABC 392
  • TCP三次握手全方面详解
  • 35~37.ppt
  • SpringSecurity高级用法
  • day4.。。。。。。。。。。。。。。。。。
  • 【学术投稿-第六届新材料与清洁能源国际学术会议(ICAMCE 2025)】组织与结构:HTML中的<fieldset>与<legend>标签解析
  • UE求职Demo开发日志#27 几个交互完善
  • C++学习笔记——类和对象(中)
  • [c语言日记]动态规划入门:杨辉三角
  • 2月10日习题
  • Android多包路由方案: ARouter 路由库
  • java实现Http请求方式的几种常见方式
  • 安装zk的方法
  • 今日AI和商界事件(2025-02-10)
  • 网站的记住我功能与用户登录持久化
  • 【UVM】寄存器模型
  • opencv:基于暗通道先验(DCP)的内窥镜图像去雾
  • fastjson2学习大纲
  • init的service 启动顺序
  • 基于 gitee 的 CI/CD
  • 球弹跳高度的计算(信息学奥赛一本通-1085)
  • 【JavaScript】this 指向由入门到精通
  • HTML标题标签(<h1>、<h2>、<h3>)的正确使用策略与SEO优化指南