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 }

 

posted @ 2020-02-25 19:49  tangq123  阅读(189)  评论(0)    收藏  举报