Peter算法小课堂—蠕动区间

蠕动区间

蠕动区间(尺取法、双游标)是一个经典的优化算法。

我们以毛毛虫举例说明

Peter算法小课堂—蠕动区间_第1张图片

具体的,我们看题目

例题

最小区间

Peter算法小课堂—蠕动区间_第2张图片

 这一题,我们用暴力法,复杂度O(N^2)

先给出暴力法代码

int ans=n+1;
for(int tail=0;tail=m){
			ans=min(ans,head+1-tail);
			break;
		}
	}
}
cout<

 我们看一下蠕动区间怎么写

Peter算法小课堂—蠕动区间_第3张图片

上面有注释,大家看不明白就私信哦

收集三原色

这道题更难一点……

Peter算法小课堂—蠕动区间_第4张图片

数据结构

string x[N];
map cnt;
set rgb;
rgb.insert("red");
rgb.insert("green");
rgb.insert("blue");

主体部分

int sum=0,ans=n+1;
int tail=0,head=0;
while(1){
	while(head

希望这些对大家有用,三联,必回 

你可能感兴趣的:(算法)