您现在的位置是:首页 >学无止境 >代码随想录算法训练营第三十三天| 贪心算法05网站首页学无止境
代码随想录算法训练营第三十三天| 贪心算法05
简介代码随想录算法训练营第三十三天| 贪心算法05
56. 合并区间
本题也是重叠区间问题,如果昨天三道都吸收的话,本题就容易理解了。
可以自己写出来,注意点:
1. 按左边界排序
2. 找到重叠区间,修改intervals
3. 放入结果的时候注意最后一组元素
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
if len(intervals)==1:
return intervals
intervals.sort(key=lambda x:x[0])
result=[]
for i in range(1,len(intervals)):
if intervals[i][0]<=intervals[i-1][1]:
intervals[i][1]=max(intervals[i][1],intervals[i-1][1])
intervals[i][0]=min(intervals[i][0],intervals[i-1][0])
else:
result.append(intervals[i-1])
if i==len(intervals)-1:
result.append(intervals[i])
return result
738. 单调递增的数字
稍微有点绕,注意点:
1. 数字转成列表形式,便于对每一位进行操作
2. 从右向左遍历,若当前位比前一位小,那么前一位数字应该减1,当前位及后面的每一位均为9则为最大数
class Solution:
def monotoneIncreasingDigits(self, n: int) -> int:
n_list=list(str(n))
for i in range(len(n_list)-1,0,-1):
if n_list[i]<n_list[i-1]:
n_list[i-1]=str(int(n_list[i-1])-1)
for j in range(i,len(n_list)):
n_list[j]='9'
return int(''.join(n_list))
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。





QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
U8W/U8W-Mini使用与常见问题解决
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结