单调队列维护合法性的这里为什么都写的while,if也可以啊
查看原帖
单调队列维护合法性的这里为什么都写的while,if也可以啊
250699
mot1ve楼主2023/4/4 17:21

为什么很多人写的是while(q1.size()&&q1.front()+k<=i)?因为是从1-i遍历的,如果不合法了一定会被这一次清除掉啊,怎么可能一次清除很多个呢?我认为if完全可以。

if(i>=k)
{
	if(q1.size()&&q1.front()+k<=i)
	{
		q1.pop_front();
	}
	printf("%d ",a[q1.front()]);
}
2023/4/4 17:21
加载中...