尺取法过程的简单描述

反复地推进区间的开头和末尾,来求取满足条件的最小区间的方法被称为尺取法。

时间复杂度O(n)。

尺取法通常适用于选取区间有一定规律,或者说所选取的区间有一定的变化趋势的情况,通俗地说,在对所选取区间进行判断之后,我们可以明确如何进一步有方向地推进区间端点以求解满足条件的区间,如果已经判断了目前所选取的区间,但却无法确定所要求解的区间如何进一步得到根据其端点得到,那么尺取法便是不可行的。首先,明确题目所需要求解的量之后,区间左右端点一般从最整个数组的起点开始,之后判断区间是否符合条件在根据实际情况变化区间的端点求解答案。

实际操作步骤:
1.初始化左右端点,到2;
2.不断扩大右端点,直到满足条件,到3;
3.如果第二步中无法满足,则中止(已到最后,无法再更新),否则更新结果,并到4;
4.将左端点+1,回到2;

图例为求解总和不小于S的连续子序列的长度的最小值的尺取法实际过程。
S=15。
在这里插入图片描述

代码实现:

int l=0,r=0;//1。
while(l<=r&&r<n)
{
    if(满足)
    {
        ……//更新
        l++;
    }
    r++;
}

写法有很多,看具体情况实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值