zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【算法/贪心算法/序列问题】题解+详细备注(共2题)

序列算法 详细 题解 贪心 备注 问题
2023-09-11 14:20:02 时间

【算法/贪心算法/序列问题】题解+详细备注(共2题)

376.摆动序列

class Solution {
public:
    int wiggleMaxLength(vector<int>& nums) {
        int n = nums.size();
        int cur{};// 记录下一个值与当前值的差
        int pre{};// 记录当前值与上一个值的差
        int result{1};// 边界条件注意:初始化为1
        for(int i{};i<n-1;++i){
            cur = nums[i+1]-nums[i];
            // 判断校验(边界条件注意:pre判断要=0)
            if((cur > 0 && pre <=0) || (cur < 0 && pre >=0)){
                pre = cur;
                result++;
            }
        }

        return result;
    }
};

738.单调递增的数字

class Solution {
public:
	// 重点是如何思考到,如果当前数字不是递增的,就是最大位-1,然后依次赋值为9:例如332不满足条件,那么符合条件的就是299
    int monotoneIncreasingDigits(int n) {
        string num = to_string(n);

        int length = num.size();

        int flag{INT_MAX}; // 记录-1后的下标
        for(int i = length-1;i>0;--i){
            if(num[i-1] > num[i]){
                flag = i;
                num[i-1]--;
            }
        }
		// 依次赋值为‘9’
        for(int i = flag;i<length;++i){
            num[i] = '9';
        }

        return stoi(num);
    }
};