代码随想录算法训练营第三十一天|leetcode56. 合并区间、leetcode738.单调递增的数字
1 leetcode56. 合并区间
文章链接:代码随想录
视频链接:贪心算法,合并区间有细节!LeetCode:56.合并区间_哔哩哔哩_bilibili
思路:其实很清楚,跟之前的方法差不多,但是自己写的时候就是有地方不会了,会不知道接下来的思路是什么
1.1 视频后的思路
卡壳的地方居然是result里面增加数据,这一块确实有点没想到
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals.sort(key=lambda x:(x[0],x[1]))
result = []
result.append(intervals[0])
for i in range(1,len(intervals)):
if intervals[i][0]<=result[-1][1]:
result[-1][1] = max(intervals[i][1],result[-1][1])
else:
result.append(intervals[i])
return result
1.2 本题小结
- 这个题目,确实就是中间那里想不到,所以就是一直不对,但是看了别人的方法以后就明白了
- 每次就是思路慢慢正确了,写的时候会有一点不知道怎么写,目前需要逐步解决这个问题
2 leetcode738.单调递增的数字
题目链接:738. 单调递增的数字 - 力扣(LeetCode)
文章链接:代码随想录
视频链接:贪心算法,思路不难想,但代码不好写!LeetCode:738.单调自增的数字_哔哩哔哩_bilibili
思路:怎么说呢,我想的是就是用最大的数来判断吧,但是写的时候有点不知道怎么去写
2.1 视频后的思路
有一种学了后面的忘了后面的,直接没写出来,但是看了吧转换也确实挺有效的
class Solution:
def monotoneIncreasingDigits(self, n: int) -> int:
str_n = list(str(n))
for i in range(len(str_n)-2,-1,-1):
if str_n[i]>str_n[i+1]:
str_n[i] = str(int(str_n[i])-1)
for j in range(i+1,len(str_n)):
str_n[j] = '9'
return int(''.join(str_n))
2.2 本题小结
- 真的有一种这个题目之前真的做过,后来我给忘了,但是写的时候呢,我就感觉我明白了一些
- 其实写到这里,我不觉得贪心算法很难,真的挺明了的,但是呢,尝试的不多的时候,还是会迷惑,实在不会其实使用python来测试,就好了
3 今日小结
- 今日后面的题目其实感觉有一种注意力不集中,就很难自己写出来吧,就有些迷糊的感觉
- 这两道题目其实真的不太难,但是主要就是数据的转换形式,会想不到
- 希望下一天的我会比现在的我好很多吧

浙公网安备 33010602011771号