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 # 记录从哪里变9
string[i-1] = str(int(string[i-1])-1)
for i in range(index,len(string)):
string[i] = '9'
string = "".join(string)
return int(string)

被折叠的 条评论
为什么被折叠?



