小学生又双叒叕来写题解啦!
翻了一下大家的思路,怎么都一样?
当数量达到 \(10^7\) 时,题解代码全爆掉!
你问为什么,时间效率 \(O(n)\) 不稳过吗?
对,可是空间复杂度呢,显然爆掉。
因此,我使用滚动数组。
由于需要关注两个相邻的数,我们自然就只需用两个变量代替数组。
其他思路还是一样的,其他题解都讲明白了,因此不再赘述。
送上满分代码:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n, cnt = 0, last, now;
scanf("%d", &n);
scanf("%d", &now);
for (int i = 2; i <= n; i++)
{
//下面两行滚动数组的实现。
last = now;
scanf("%d", &now);
if (last == i-1) swap(now, last), cnt++;
}
if (now == n) cnt++; //最后一个数没有处理到,要额外补处理。
printf("%d\n", cnt); //勿忘祖传换行。
return 0;
}
首发:2022-02-04 22:57:26
标签:include,int,题解,scanf,AT3525,now From: https://www.cnblogs.com/liangbowen/p/16622800.html