class Solution:
"""
@param num: a non-negative integer N
@return: the largest number that is less than or equal to N with monotone increasing digits.
"""
def monotoneDigits(self, num):
# write your code here
strs = str(num)
res = self.dfs(int(strs[0]), strs[0], strs, 0)
return int(res)
def dfs(self, limit, ans, strs, front):
if len(strs) == 1:
return ans
# 回溯法➕贪心策略,满足向前,不满足回退
res = None
if strs[1] >= ans:
res = self.dfs(int(strs[1]), strs[1], strs[1:], limit)
if res is not None:
return ans + res
elif limit-1 >= front:
return str(limit-1)+'9'*(len(strs)-1)
else:
return None
"""
@param num: a non-negative integer N
@return: the largest number that is less than or equal to N with monotone increasing digits.
"""
def monotoneDigits(self, num):
# write your code here
strs = str(num)
res = self.dfs(int(strs[0]), strs[0], strs, 0)
return int(res)
def dfs(self, limit, ans, strs, front):
if len(strs) == 1:
return ans
# 回溯法➕贪心策略,满足向前,不满足回退
res = None
if strs[1] >= ans:
res = self.dfs(int(strs[1]), strs[1], strs[1:], limit)
if res is not None:
return ans + res
elif limit-1 >= front:
return str(limit-1)+'9'*(len(strs)-1)
else:
return None