题解 | #字符串出现次数的TopK问题#

字符串出现次数的TopK问题

http://www.nowcoder.com/practice/fd711bdfa0e840b381d7e1b82183b3ee

using psi = pair<string, int>;
// 自定义大顶堆
struct cmp {
  bool operator()(const psi& p1, const psi& p2) {
    if (p1.second != p2.second) return p1.second < p2.second;
    return p1.first > p2.first;
  }
};

vector<vector<string> > topKstrings(vector<string>& strings, int k) {
  vector<vector<string> > ans;
  int len = strings.size();
  if (len == 0) return ans;

  unordered_map<string, int> umap;
  for (const auto& s : strings) {
    ++umap[s];
  }
  priority_queue<psi, vector<psi>, cmp> pque(umap.begin(), umap.end());
  // 取大顶堆前k元素
  while (k-- && !pque.empty()) {
    auto tmp = pque.top();
    pque.pop();
    ans.emplace_back(vector<string>{ tmp.first, to_string(tmp.second) });
  }
  return ans;
}

int main() {
  vector<string> vec{ "123","123","231","32" };
  auto ans = topKstrings(vec, 2);
  return 0;
}
全部评论

相关推荐

04-13 18:10
门头沟学院 Java
想熬夜的小飞象在秋招:被腾讯挂了后爸妈以为我失联了
点赞 评论 收藏
分享
05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务