我有一个关于耗时的问题,有无大佬解决一下
查看原帖
我有一个关于耗时的问题,有无大佬解决一下
1180146
kaito_936楼主2024/4/9 20:43

这个题目对时间不是很苛刻吗,所以我试了一个下午,包括偷看别人的代码,我就发现一个问题,为什么代码明明差不多,举个例子:这题不是用单调队列吗,我就用的一个数组,然后定义一个开始位置和结束位置。结果是耗时稳定在930ms,但是有个和我代码差不多的用的容器耗时640ms,然后我也就用了容器,但是还是稳定930ms,这是为什么啊(我还没有接触过数据结构与算法),纠结了我一个下午了。



#include<iostream>
#include<deque>
using namespace std;
int N, M, a1[2000001];
deque<int> arr;
int main()
{
    cin >> N >> M;
    printf("0\n");
    for (int i = 1; i < N; i++) {
	scanf_s("%d", a1 + i);
	while ( !arr.empty()&& a1[arr.back()] >= a1[i]) arr.pop_back();
	arr.push_back(i);
	if (i - arr.front() == M) arr.pop_front();
	printf("%d\n", a1[arr.front()]);
    }
    return 0;
}
2024/4/9 20:43
加载中...