1. 题目

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

我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n),满足 array[i] <= array[i + 1]。

示例 1:
输入: [4,2,3]
输出: True
解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。示例 2:
输入: [4,2,1]
输出: False
解释: 你不能在只改变一个元素的情况下将其变为非递减数列。
说明:  n 的范围为 [1, 10,000]。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/non-decreasing-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 双指针,找到不满足的左右端点
  • 左右端点距离序小于等于1,并且不能是上图第四种情况
class Solution {public:bool checkPossibility(vector<int>& nums) {int n = nums.size(), i = 0, j = n-1;while(i < j && nums[i] <= nums[i+1])i++;while(i < j && nums[j-1] <= nums[j])j--;//i,j停下的地方可能不满足非降int leftMax =  i == 0 ? INT_MIN : nums[i-1];int rightMin =  j == n-1 ? INT_MAX : nums[j+1];if(j-i <= 1 && (leftMax <= nums[j] || nums[i] <= rightMin))return true;return false;}
};

LeetCode 665. 非递减数列(双指针)相关推荐

  1. leetcode 665. 非递减数列(贪心算法)

    给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列. 我们是这样定义一个非递减数列的: 对于数组中所有的 i (0 <= i <= n ...

  2. LeetCode 665 非递减数列

    题目描述 给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一 个非递减数列.我们是这样定义一个非递减数列的: 对于数组中所有的 i (0 <= i &l ...

  3. 665. 非递减数列 golang 切片越界问题的探讨(二)

    思路 给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列. 我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < ...

  4. 力扣665. 非递减数列

    题目 给你一个长度为 n 的整数数组 nums ,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列. 我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= ...

  5. 665. 非递减数列

    给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列. 我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n ...

  6. leetcode 665. Non-decreasing Array | 665. 非递减数列(Java)

    题目 https://leetcode.com/problems/non-decreasing-array/ 题解 一开始思路有问题,忽略了一些情况,见草稿. 第一次提交没过,根据 test case ...

  7. LeetCode-665:非递减数列

    题目描述: 给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列. 我们是这样定义一个非递减数列的: 对于数组中所有的 i (0 <= i & ...

  8. 非递减数列JAVA_C语言实现两个递减数列中寻找某一个数

    本文实例讲述了C语言实现两个递减数列中寻找某一个数的方法,分享给大家供大家参考之用.具体方法如下: 通常来说这道题算二分查找法中非常有难度的一题了. 题目如下: 一个数组是由一个递减数列左移若干位形成 ...

  9. C#LeetCode刷题之#665-非递减数列( Non-decreasing Array)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3732 访问. 给定一个长度为 n 的整数数组,你的任务是判断在最 ...

最新文章

  1. [译] Android 上一次编写,随处测试
  2. 用JavaScript获取表单里的值
  3. S5PV210开发 -- QT4.8 移植
  4. Visual Guide to NoSQL Systems
  5. openflow多级流表机制的优点?
  6. Cannot resolve xxx.5.5
  7. mysql 行级锁 where_mysql 行级锁的使用以及死锁的预防
  8. DHCP Snooping,Dynamic ARP Inspection实现
  9. 时间序列预测算法——DeepAR
  10. 8 个顶级网络攻击地图以及如何使用它们
  11. QT实现植物大战僵尸中文版工具代码
  12. Java基础题26:(多选题)下列哪些选项属于Java技术体系()
  13. V4L2文档翻译(十一)
  14. 【TWVRP】粒子群算法求解带时间窗的车辆路径规划问题(总成本最低)【含Matlab源码 2590期】
  15. HTML实现二级联动下拉菜单,基于jquery的二级联动菜单实现代码
  16. 苹果VS谷歌,开战了?
  17. 怎么区分zh和ch_如何区分汉语拼音“z,c,s”与“zh,ch,sh”的发音?
  18. iptables防火墙和firewalld防火墙
  19. 大数据运维架构师培训(1):Zookeeper,Hadoop(HDFS,MR,Yarn)
  20. Atitit 最近资料文章列表r9 r8 月份 attilax总结

热门文章

  1. C++ virtual 析构函数
  2. 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
  3. sd_fusing.sh将uboot烧写到SD卡
  4. shell 替换字符串的几种方法,变量替换${},sed,awk
  5. asp.net 开发注意的几点
  6. python__实参前加*和**的(拆包)功能
  7. 7.Reverse Integer (INT; Overflow)
  8. 【转载】揭开硬件中断请求IRQ所有秘密(图解)
  9. 将源字符串的前count个字符拷贝到目的字符串中strncpy()
  10. Linux系统编程-管道入门