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
};
贪心算法总结
一刷代码随想录,贪心算法真的很难!没有规律的一套题!如果以后有机会再多看看贪心算法。