LeetCode 692.前K个高频单词

LeetCode 692.前K个高频单词 C++

思路🧐:

首先用map存储该字典,然后放进vector进行排序,注意sort的排序规则与我们想要的规则不一致,所以我们需要写一个伪函数来判断second(value值),由于该题要求了稳定性,所以我们在伪函数还需要继续判断相等情况的顺序。排完序后用vector将前k个单词存储起来返回。

代码🔎:

c++ 复制代码
class Solution {
public:
    struct Ksort
    {
        bool operator()(const pair<string,int>& kv1,const pair<string,int>& kv2)
        {
            return kv1.second > kv2.second || (kv1.second == kv2.second) && kv1.first < kv2.first;
        }
    };
    vector<string> topKFrequent(vector<string>& words, int k) {
        map<string, int> top;
        for(auto& e : words)
        {
            top[e]++;
        }
        vector<pair<string,int>> v(top.begin(),top.end()); //vector兼容多种迭代器
        sort(v.begin(),v.end(),Ksort()); //排序
        vector<string> topv;
        for(size_t i = 0; i < k; i++) //选取前k个
        {
            topv.push_back(v[i].first);
        }
        return topv;
    }
};
相关推荐
源代码•宸31 分钟前
Leetcode—322. 零钱兑换【中等】(memset(dp,0x3f, sizeof(dp))
c++·算法·leetcode·职场和发展·dp
机械心31 分钟前
最优化理论与自动驾驶(一):概述
人工智能·算法·自动驾驶
给自己做减法33 分钟前
排序算法快速记忆
java·算法·排序算法
初级代码游戏36 分钟前
国密起步6:GmSSL3使用SM4自定义格式加解密C++版
c++·国密·sm4
许野平37 分钟前
Rust 编译器使用的 C++ 编译器吗?
c++·rust
新知图书43 分钟前
Rust的常量
算法·机器学习·rust
DdddJMs__1351 小时前
C语言 | Leetcode题解之第403题青蛙过河
c语言·数据结构·算法
小林熬夜学编程1 小时前
【Linux系统编程】第二十弹---进程优先级 && 命令行参数 && 环境变量
linux·运维·服务器·c语言·开发语言·算法
向阳逐梦1 小时前
ROS 编程入门的介绍
人工智能·算法·机器学习
六点半8881 小时前
【C/C++】涉及string类的经典OJ编程题
c语言·开发语言·c++·算法