56.合并区间
https://leetcode.cn/problems/merge-intervals/description/
代码随想录
https://programmercarl.com/0056.合并区间.html
738.单调递增的数字
https://leetcode.cn/problems/monotone-increasing-digits/description/
代码随想录
https://programmercarl.com/0738.单调递增的数字.html
56.合并区间
题解思路
- 和res最后一个比较是否重合;
- 如果不重合,就增加一个;
- 如果重合,将前面的范围扩散到最大;
题解代码
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
if len(intervals)==0:
return []
intervals.sort(key = lambda x:x[0])
res = [intervals[0]]
for i in range(1,len(intervals)):
if intervals[i][0]>res[-1][1]:##不重合
res.append(intervals[i])
else:
res[-1][1] = max(intervals[i][1],res[-1][1])
return res
738.单调递增的数字
题解思路
- 从后向前找不符合要求的数字
- 找到后标记 将前一个向下减一 后面全部变为9
题解代码
class Solution:
def monotoneIncreasingDigits(self, n: int) -> int:
if n<10:
return n
strnum = str(n)
flag = len(strnum) ###设定flag是完全不需要改变的
for i in range(len(strnum)-1,0,-1):##从后往前遍历
if int(strnum[i])<int(strnum[i-1]):
flag = i
strnum = strnum[:i-1]+str(int(strnum[i-1])-1)+strnum[i:]
strnum_i = strnum[:flag]+"9" * (len(strnum)-flag)
return int(strnum_i)
标签:int,res,56,随想录,算法,intervals,https,题解
From: https://www.cnblogs.com/P201821440041/p/18314567