1083 是否存在相等的差
hash题。
我刚开始用map做的,因为map按关键字 递减排序,所以我以为倒着输出就可以。代码如下。

结果有的数据根本就无法输出,比如,
输入:2
输入:1 2
输出:(什么也没有)
后来请教了群里的大佬,说有一个反向迭代器。比较简单,比正向迭代器多加一个字母 r ,代码如下。

1 #include<iostream> 2 #include<map> 3 using namespace std; 4 int main() { 5 int n,t; 6 cin>>n; 7 map<int,int> mp; 8 for(int i = 1; i <= n; ++i) { 9 cin>>t; 10 mp[abs(t-i)]++; 11 } 12 for(auto it = mp.rbegin(); it != mp.rend(); ++it){//反向迭代器,逆序遍历map 13 if(it->second > 1) 14 printf("%d %d\n",it->first,it->second); 15 } 16 return 0; 17 }


浙公网安备 33010602011771号