我正在寻找public void taskToAssessment() {
toolbar.animate().translationY(toolbar.getTop()).setInterpolator(new AccelerateInterpolator()).start();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.anim.left_in, R.anim.left_out);
AssessmentFragment af = new AssessmentFragment();
ft.replace(R.id.mainFragment, af);
ft.addToBackStack(null);
ft.commit();
}
和map
之间的差异,现在大多数人都知道。{/ p>
问题:Problem Link
地图解决方案:Accepted Solution
unordere_map
#include <bits/stdc++.h>
using namespace std;
int main() {
int N;
cin >> N;
map<int,int> mp;
map<int,int> ::iterator it;
int ans = 0;
for(int i=0;i<N;i++){
int X;
cin >> X;
mp[X]++;
}
for(it=mp.begin();it!=mp.end();++it){
int X = it->first;
//cout<<it->first<<" "<<it->second<<endl;
ans = max(ans,mp[(X-1)]+mp[(X)]);
}
cout<<ans<<endl;
return 0;
}
:WA Solution
unordered_map
据我所知,只有#include <bits/stdc++.h>
using namespace std;
int main() {
int N;
cin >> N;
unordered_map<int,int> mp;
unordered_map<int,int> ::iterator it;
int ans = 0;
for(int i=0;i<N;i++){
int X;
cin >> X;
mp[X]++;
}
for(it=mp.begin();it!=mp.end();++it){
int X = it->first;
//cout<<it->first<<" "<<it->second<<endl;
ans = max(ans,mp[(X-1)]+mp[(X)]);
}
cout<<ans<<endl;
return 0;
}
Input :
98
7 12 13 19 17 7 3 18 9 18 13 12 3 13 7 9 18 9 18 9 13 18 13 13 18 18 17 17 13 3 12 13 19 17 19 12 18 13 7 3 3 12 7 13 7 3 17 9 13 13 13 12 18 18 9 7 19 17 13 18 19 9 18 18 18 19 17 7 12 3 13 19 12 3 9 17 13 19 12 18 13 18 18 18 17 13 3 18 19 7 12 9 18 3 13 13 9 7
Output : 10
Expected Output : 30
和map
的区别在于地图包含排序方式的密钥,而unordered_map
则没有。
答案 0 :(得分:2)
mp[(X-1)]
可能需要在地图中插入新元素(如果密钥X-1
尚未出现)。对于std::map
,插入新元素不会使任何现有迭代器无效。使用std::unordered_map
,它可能(如果插入恰好触发重新散列)。如果是,it
将变为无效,后续++it
会显示未定义的行为。