代码随想录第37天 | 738. 单调递增的数字、贪心算法总结

738. 单调递增的数字

要从后往前遍历:如果当前数字小于前后的一个数字,说明要把当前的变成9,前面的减1。这里用flag进行标记,最后统一把flag之后的所有数字变成9。

/**
 * @param {number} n
 * @return {number}
 */
var monotoneIncreasingDigits = function (n) {
    n = n.toString()
    n = n.split('').map(item => +item)
    let flag = Infinity
    for (let i = n.length - 1; i > 0; i--) {
        if (n[i - 1] > n[i]) {
            flag = i
            n[i - 1] = n[i - 1] - 1
        }
    }
    for (let i = flag; i < n.length; i++) {
        n[i] = 9
    }
    n = n.join('')
    return +n
};

贪心算法总结

一刷代码随想录,贪心算法真的很难!没有规律的一套题!如果以后有机会再多看看贪心算法。

你可能感兴趣的:(贪心算法,算法,javascript,leetcode)