注意
1.记录不同的数,有多少个记录相关的数据,就要多少次把第一个元素加进去,比如
#include<iostream>
using namespace std;
int a[1000005],diff[1000005],diffcnt;
int main()
{
int n;cin>>n;
for(int i=1;i<=n;++i) {cin>>a[i];}
diffcnt=0;
for(int i=2;i<=n;++i)
{
if(a[i]!=a[i-1]) {diff[++diffcnt]=i;}
}
...
}
就明显错了,因为diff漏了第一个元素下标
应将diffcnt=0;改成diff[1]=1;diffcnt=1;
2.特判时,多个输入的题,如果输入一部分数据就知道答案,一定不要提前退出(否则会答案错误,甚至莫名其妙运行错误),等全部输入完后再continue;比如
#include<iostream>
using namespace std;
int a[100005];
int main()
{
int n;cin>>n;
if(n==1) {cout<<"0\n";continue;}
cin>>a[1];
int minpos=1,minnum=a[1];
for(int i=2;i<=n;++i)
{
cin>>a[i];
if(a[i]<minnum) {minpos=i;minnum=a[i];}
}
...
}
明显就错了,因为n==1时提前continue;会导致这一次的a[1]没有被输入,留到下一次再输入就会WA或RE
将n==1;continue;的特判放到全部输入完之后就可以了