华为0904-第一题
按元素频率高低进行输出,如果频率相同,则按元素的额值大小进行排序
自定义item类型
1 2 3 4 5
| struct item { int num; int count; item(int num, int count) : num(num), count(count) {} };
|
方法一 : set
1 2 3 4 5 6 7 8 9 10
| auto dcompare = [](const item& l, const item& r) -> bool { bool ret = false; if (l.count > r.count) ret = true; else if (l.count == r.count) ret = l.num > r.num; return ret; };
set<item, decltype(dcompare)>st(dcompare);
|
方法二 :vector
其实这里直接使用vector容器也可以,所有元素完全插入后,直接来一个sort就可以
1 2 3 4 5 6 7 8 9 10 11 12
| vector<item> st(mp.size(), item(0, 0)); int i = 0; for (auto it : mp) { st[i++] = item(it.first, it.second); } sort(st.begin(), st.end(), [](const item& l, const item& r) -> bool { bool ret = false; if (l.count > r.count) ret = true; else if (l.count == r.count) ret = l.num > r.num; return ret; });
|