1677个高频单词_3500高频词汇表

1677个高频单词_3500高频词汇表给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2输出: [“i”, “love”]解析: “i” 和 “love” 为出现次数最多的两个单词,均为2次。 注意,按字母顺序 “i” 在 “love” 之前。 示例 2:输入: [“the”, “day”, “is


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给一非空的单词列表,返回前 k 个出现次数最多的单词。

返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。

示例 1:

输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2
输出: ["i", "love"]
解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。
    注意,按字母顺序 "i" 在 "love" 之前。
 

示例 2:

输入: ["the", "day", "is", "sunny", "the", "the", "the", "sunny", "is", "is"], k = 4
输出: ["the", "is", "sunny", "day"]
解析: "the", "is", "sunny" 和 "day" 是出现次数最多的四个单词,
    出现次数依次为 4, 3, 2 和 1 次。
 

注意:

假定 k 总为有效值, 1 ≤ k ≤ 集合元素数。
输入的单词均由小写字母组成。

扩展练习:

尝试以 O(n log k) 时间复杂度和 O(n) 空间复杂度解决。


class Solution { 
   
public:
struct  Node{ 
   
    string s;
    int val;
    Node(string s,int v){ 
   
        this->s = s,val = v;
    }
    bool operator>(const Node &b)const{ 
   
        if(val == b.val)return s < b.s;
        return val > b.val;
    }
};
    vector<string> topKFrequent(vector<string>& words, int k) { 
   
        unordered_map<string,int>m;
        for(auto &a : words){ 
   
            if(!m.count(a))m[a] = 0;
            m[a] ++;
        }
        priority_queue<Node,vector<Node>,greater<Node> >p;
        unordered_map<string,int>::iterator it;
        for(it = m.begin();it != m.end();it ++){ 
   
            Node a(it->first,it->second);
            if(p.size() == k){ 
   
                if(a > p.top()){ 
   
                    p.pop();
                    p.push(a);
                }
            }
            else p.push(a);
        }
        vector<string>ans;
        while(p.size()){ 
   
            ans.push_back(p.top().s);
            p.pop();
        }
        reverse(ans.begin(),ans.end());
        return ans;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169070.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Java学习之Swing Gui编程

    Java学习之SwingGui编程0x00前言前面的使用的Gui是基于Awt去进行实现,但是在现实写Gui中AWT实际运用会比较少。上篇:Java学习之AWTGUI编程上上篇:Jav

    2021年12月12日
  • java tasklist_java 调用 cmd 中的 tasklist 来获取特定进程的PID[通俗易懂]

    java tasklist_java 调用 cmd 中的 tasklist 来获取特定进程的PID[通俗易懂]//显示进程Processprocess=Runtime.getRuntime().exec(“tasklist”);Scannerin=newScanner(process.getInputStream());while(in.hasNextLine()){Stringp=in.nextLine();//打印所有进程System.out.println(p);if(p.contain…

    2022年6月2日
  • bind-chroot和dnssec技术实战

    bind-chroot和dnssec技术实战安装部署bind-chroot系统环境服务器:腾讯云主机,有公网IPOS:CentOSLinuxrelease7.4.1708(Core)bind-chroot:bind-chroot-9

    2022年7月3日
  • 2018年Android SDK下载安装及配置教程

    2018年Android SDK下载安装及配置教程下载并安装Android SDK官网(可翻墙选择):http://developer.android.com/sdk/index.html不可翻墙选择:http://www.androiddevtools.cn/或者360安全卫士—360软件管家—编程开发—搜索即可。(下面以第二种方法为例进行下载)1、下载AndroidSDKTools先找到SDKTools,下载最新的版本即可。选择zip的…

    2022年7月19日
  • [医疗信息化][DICOM教程]DICOM标准简介[通俗易懂]

    [医疗信息化][DICOM教程]DICOM标准简介[通俗易懂][医疗信息化][DICOM教程]DICOM标准简介使用OsiriX的DICOM标准简介内容介绍什么是DICOM医院系统内的图像传输了解DICOM服务OsiriX提供的DICOM服务其他DICOM服务DICOM文件格式DICOM结构化报告符合DICOMDICOM与其他标准的互操作性结论介绍这是我有关DICOM标准的系列文章的一部分,并快速概述了DICOM标…

    2022年5月25日
  • 两个队列实现一个栈思路c语言_栈和队列的主要区别

    两个队列实现一个栈思路c语言_栈和队列的主要区别用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:[“CQueue”,“deleteHead”,“appendTail”,“ap

    2022年8月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号