738. 单调递增的数字
注意到如果有不满足的,就会把后面的数改成9
def monotoneIncreasingDigits(self, n: int) -> int:
num = []
while n > 9:
num.append(n%10)
n = n // 10
num.append(n)
num = num[::-1]
# 找到目前能满足递增的数
for i in range(len(num)-2,-1,-1):
if num[i] > num[i+1]:
num[i+1] = 9
num[i] -= 1
ind = i + 1
while ind < len(num) - 1:
ind += 1
num[ind] = 9
res = 0
j = 0
for i in range(len(num)-1,-1,-1):
res += num[i] * (10 ** j)
j += 1
return res
改进:
if int(a[i]) < int(a[i-1]):
a[i-1] = str(int(a[i-1]) - 1)
a[i:] = '9' * (len(a) - i) #python不需要设置flag值,直接按长度给9就好了
968. 监控二叉树
(待补)
贪心总结
局部最优推出全局最优
用贪心的方法的话,有把全局分解到局部的思路
对一些中等难度的题,贪心和动规的思路是可以互通的
复杂的题,用贪心的思想可以提升性能