首页 > 编程语言 >代码随想录算法训练营第三十一天|leetcode56. 合并区间、leetcode738.单调递增的数字

代码随想录算法训练营第三十一天|leetcode56. 合并区间、leetcode738.单调递增的数字

时间:2024-12-02 17:57:14浏览次数:18  
标签:leetcode56 题目 int 随想录 leetcode738 intervals str 思路 链接

1 leetcode56. 合并区间

题目链接:56. 合并区间 - 力扣(LeetCode)

文章链接:代码随想录

视频链接:贪心算法,合并区间有细节!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 本题小结
  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 本题小结
  1. 真的有一种这个题目之前真的做过,后来我给忘了,但是写的时候呢,我就感觉我明白了一些

  2. 其实写到这里,我不觉得贪心算法很难,真的挺明了的,但是呢,尝试的不多的时候,还是会迷惑,实在不会其实使用python来测试,就好了

3 今日小结

  1. 今日后面的题目其实感觉有一种注意力不集中,就很难自己写出来吧,就有些迷糊的感觉

  2. 这两道题目其实真的不太难,但是主要就是数据的转换形式,会想不到

  3. 希望下一天的我会比现在的我好很多吧

标签:leetcode56,题目,int,随想录,leetcode738,intervals,str,思路,链接
From: https://blog.csdn.net/angela3264/article/details/144194737

相关文章