我的PAT-BASIC代码仓:https://github.com/617076674/PAT-BASIC
原题链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805260780945408
题目描述:
知识点:计数
思路:开一个大小为10000的数组来存储每个差值出现的次数
时间复杂度是O(N)。空间复杂度是O(10000)。
C++代码:
#include<iostream>
#include<math.h>
using namespace std;
int main(){
int N;
cin >> N;
int diff[10000];
for(int i = 0; i < 10000; i++){
diff[i] = 0;
}
int tempNum;
for(int i = 1; i <= N; i++){
cin >> tempNum;
diff[abs(tempNum - i)]++;
}
for(int i = 9999; i >= 0; i--){
if(diff[i] > 1){
printf("%d %d\n", i, diff[i]);
}
}
return 0;
}
C++解题报告: