56. 合并区间
题目链接: 56. 合并区间 - 力扣(LeetCode)
贪心
class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:intervals.sort(key=lambda x:x[0])res = []left = intervals[0][0]right = intervals[0][1]for i in range(1,len(intervals)):if intervals[i][0]>right:res.append([left,right])left = intervals[i][0]right = intervals[i][1]else:right = max(right,intervals[i][1])res.append([left,right])return res
738.单调递增的数字
题目链接: 738.单调递增的数字 - 力扣(LeetCode)
思路
- 思路:例如32,因为3和2不递增,那么将前面的数-1,后边的数全变成9,结果是29;例如332,则将第一个3减一,后边变成9,结果是299
- 实现:从后向前遍历,在遍历中直接-1,用index记录变9的位置。
贪心
class Solution:def monotoneIncreasingDigits(self, n: int) -> int:string = str(n)string = list(string)index = len(string)for i in range(len(string)-1,0,-1): # 从后往前遍历print(string[i])if string[i] < string[i-1]:index = i # 记录从哪里变9string[i-1] = str(int(string[i-1])-1)for i in range(index,len(string)):string[i] = '9'string = "".join(string)return int(string)