美文网首页
leetcode 非递减序列

leetcode 非递减序列

作者: 华小锐 | 来源:发表于2019-07-10 22:38 被阅读0次

题目要求

给定一个序列,改动其中的数字,能够构成非递减序列所更改次数少于2的函数返回真,否则返回假。

思路

首先考虑数组数量少于等于2的时候一定可以构成非递减序列
当大于等于3时需要,遇到当前的值大于后面的一个值说明这时候需要进行修改,修改有两种情况,将当前的值设置成前面的值,或者是设置成后面的值。
1.设置成前面的值
后面的值大于前面值的时候,设置当前的值为前面的值可以保证非递减序列。
2.设置成后面的值
后面的值小于前面值的时候,设置当前的值为后面的值可以保证非递减序列。

class Solution {
public:
    bool checkPossibility(vector<int>& nums) {
        int sum = 0;
        if(nums.size()<=2) return true;
        
        if(nums[0]>nums[1])
        {
            sum++;
            nums[0] = nums[1];
        }
        for(int i = 1;i<nums.size()-1;i++)
        {
            // 如果大了必然得改
            if(nums[i]>nums[i+1])
            {
                if(nums[i+1]>nums[i-1])
                {
                    nums[i] = nums[i-1];
                }
                if(nums[i+1]<nums[i-1])
                {
                    nums[i+1] = nums[i];
                }
                sum++;
            }
        }
        
        if(sum>1)
        {
            return false;
        }
        return true;
    }
};

相关文章

  • leetcode 非递减序列

    题目要求 给定一个序列,改动其中的数字,能够构成非递减序列所更改次数少于2的函数返回真,否则返回假。 思路 首先考...

  • POJ3368-Frequent values(RMQ-ST)

    Frequent values题意:给出一串非递减序列,询问区间中出现次数最多的数的次数是多少?思路:非递减序列,...

  • 665. 非递减数列

    没有看明白题目,因为不知道什么是非递减,后来看了帖子明白了,非递减就是这样的序列: 我们是这样定义一个非递减数列的...

  • tag12:排序 归并排序和非递增最小子序列

    leetcode1403. 非递增顺序的最小子序列[https://leetcode-cn.com/problem...

  • 数组算法相关题目--Swift

    1、提莫攻击 2、 非递减数组 3、最长且连续的的递增序列

  • LeetCode-非递减数队列

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

  • leetcode 665 非递减数列

    遍历删除元素,排序看是否相等,超时!!! 找到后一个元素比前一个元素大的数,要么改该元素([4, 5, 5]),要...

  • 旋转数组最小值

    将一个非递减序列的某一处切一刀,再把前半段序列放到后半段序列的后面,这样组成的新序列叫做“旋转数组”。要求获取一个...

  • LeetCode算法系列_0891_子序列宽度之和

    LeetCode算法系列0891子序列宽度之和 题目描述 给定一个整数数组 A ,考虑 A 的所有非空子序列。 对...

  • Leetcode 665. 非递减数列

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

网友评论

      本文标题:leetcode 非递减序列

      本文链接:https://www.haomeiwen.com/subject/qgxlkctx.html