刷题日记系列2

今天状态不太好,笨笨的。。只做了一道题

  • 435题,无重叠区间,即给出区间求出若要无重复区间,最少要去掉多少区间?

有四种方法,分别是

(1)以起点排序的动态规划

整体的动态规划:要考虑,1. 保留当前区间   j<i,求得max{ dp[j]+1}   2. 不保留当前区间,dp[i]=dp[i-1]

如果是以起点排序的话,最后一个区间一定是存在的。根据贪心。所以第二个选择可以忽略。同时,对于第一个选项,因为是起点排序,只存在以下可能。所以存在 m>n&&dp[m]<dp[n] 。只能优化第二个选项。

|----------|                                  |-----------------|                                 |----------------|

                  |----------|                         |-----------------|                                 |------|

第一种情况 dp[m]=dp[m-1]+1

第二种情况 dp[m]>dp[m-1],根据贪心,与前面相交的情况,m-1要多。

第三种情况 dp[m]<dp[m-1],同上。

但是必须每个初始化为1。即保留当前的。

(2)以终点排序的动态规划

整体的动态规划满足,也有三种情况

|--------------|                                   |----------------|                                    |---------------|

                      |-----------------|                  |---------------|                        |-------------------------|

对于第二个选项,不能满足,因为上面第三种情况,是保留前一个,而不是保留后一个。

对于第一个选项,存不存在 m>n&&dp[m]<dp[n]呢?不存在的。

所以只能优化第一个选项

(3)以起点排序的贪心算法

同上面起点排序的动态规划的三种可能。复制在下面

|----------|                                  |-----------------|                                 |----------------|

                  |----------|                         |-----------------|                                 |------|

第一种情况,保留,可保留的区间+1,

第二种情况,保留前一个,不做操作。

第三种情况,保留后一个,删掉前一个。

(4)以终点排序的贪心算法

三种情况复制在下面

|--------------|                                   |----------------|                                    |---------------|

                      |-----------------|                  |---------------|                        |-------------------------|

第一种情况,保留。

第二种情况,保留前一个,

第三种情况,保留前一个。

 

言而总之,动态规划向前看,为前面留空间,贪心向后看,为后面留空间。

 

  • 1095题。山脉数组查找目标值

1. 找出山脉的峰值

2. 左边二分

3. 右边二分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值