代码随想录算法训练营第三十天|leetcode452. 用最少数量的箭引爆气球、leetcode435. 无重叠区间、leetcode763.划分字母区间

1 leetcode452. 用最少数量的箭引爆气球

题目链接:452. 用最少数量的箭引爆气球 - 力扣(LeetCode)

文章链接:代码随想录

视频链接:贪心算法,判断重叠区间问题 | LeetCode:452.用最少数量的箭引爆气球_哔哩哔哩_bilibili

思路:有方法了,但是呢不知道怎么往后写,就是先找到对起始位置按照从小到大的顺序排列,然后呢就是比较第一个列表终止位置和循环内的起始位置比较,如果找到比这个终止位置大的起始位置了,那就增加一个引爆气球的值。这个局部最优可以退出全局最优,但是不会写代码

1.1 视频后的思路

和我的一模一样,但是呢我不知道如何更新

class Solution:
    def findMinArrowShots(self, points: List[List[int]]) -> int:
        points.sort(key = lambda x:(x[0],x[1]))
        num_p = 1
        for i in range(1,len(points)):
            if points[i][0]>points[i-1][1]:
                num_p +=1
            else:
                points[i][1]=min(points[i][1],points[i-1][1])
        return num_p

1.2 本题小结

  1. 这道题目的主要地方就是中间的加和,这里和我的思路是一模一样的,但是就是更新右边界我是没想到的,就想到了前面的循环语句

2 leetcode435. 无重叠区间

题目链接:435. 无重叠区间 - 力扣(LeetCode)

文章链接:代码随想录

视频链接:贪心算法,依然是判断重叠区间 | LeetCode:435.无重叠区间_哔哩哔哩_bilibili

思路:哈哈哈哈哈哈,没思路的一题,想了一会儿无从下手

2.1 视频后的方法

嗯,看了视频以后,我觉得我好傻,上一题有思路这道题没有,,,

class Solution:
    def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
        intervals.sort(key=lambda x:(x[0],x[1]))
        count = 0
        for i in range(1,len(intervals)):
            if intervals[i-1][1]>intervals[i][0]:
                count+=1
                intervals[i][1] = min(intervals[i-1][1],intervals[i][1])
        return count

2.2 本题小结

  1. 看视频的时候,发现自己是个大聪明,就是没想到怎么将删除的进行统计,但是其他的都是一样的

3 leetcode763.划分字母区间

题目链接:763. 划分字母区间 - 力扣(LeetCode)

文章链接:代码随想录

视频链接:贪心算法,寻找最远的出现位置! LeetCode:763.划分字母区间_哔哩哔哩_bilibili

思路:懵啦,彻底整不会了,看视频学习吧

3.1 视频后的方法

就是有一种看完我就明白了应该怎么写的感觉,但是已经忘了如何将字符串转换成ASCII码了

class Solution:
    def partitionLabels(self, s: str) -> List[int]:
        last_des = {}
        for key,value in enumerate(s):
            last_des[value] = key
        result = []
        left =0
        right = 0
        for i,ch in enumerate(s):
            right = max(right,last_des[ch])
            if i == right:
                result.append(right-left+1)
                left = i+1
        return result

3.2 本题小结

  1. 这道题目主要是数据的转换,不是那么的容易想到用这种方法
  2. 还有记录数据的时候,我也有点卡了,最后是看了视频我能明白了,希望我在二刷的时候能更得心应手一点吧

4 今日小结

  1. 今天的题目,怎么说呢,前两道题我是有思路的,第一题的前面我也写出来了,但是更新的后面,我写错了,不过还是思考后,感觉不一样
  2. 第二道题目,我在想是用哈希还是什么方法,也经过了一个阶段吧,虽然后来是看视频的,但是终归还是自己想过,在这里感受到了日积月累自己的变化了
posted @ 2024-11-29 16:38  小方呀0524  阅读(25)  评论(0)    收藏  举报