738. 单调递增的数字
要求:当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。
给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。
思路
从后往前遍历,判断是否比前一位字符大,大的话则减1,然后记录下flag,从这一位往后都变成9。 JS中还要注意字符和数组的转换,首先要将数字转换为字符str,然后按位遍历要将字符串str转换为数组,最后再合并成一个字符。
var monotoneIncreasingDigits = function(n) {
let str = n.toString()
str = str.split('').map(item => {return +item})
let flag = str.length
for(let i=str.length-1; i>0; i--){
if(str[i-1]>str[i]){
str[i-1]--
flag = i
}
}
for(let i = flag; i<str.length; i++){
str[i] = 9
}
str = str.join('')
return Number(str)
};
968. 监控二叉树
要求:给定一个二叉树,我们在树的节点上安装摄像头。
节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。
计算监控树的所有节点所需的最小摄像头数量。
思路
先跳过