zoukankan      html  css  js  c++  java
  • leetcode算法题基础(三十一)trie(三)692. 前K个高频单词

    给一非空的单词列表,返回前 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 ≤ 集合元素数。
    输入的单词均由小写字母组成。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/top-k-frequent-words
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    class Solution:
        def topKFrequent(self, words: List[str], k: int) -> List[str]:
            """
            :type words: List[str]
            :type k: int
            :rtype: List[str]
            """
            dicts = {}
            # 统计出现过的单词
            for word in words:
                dicts[word] = 0
            # 统计每一个单词出现的频率
            for word in words:
                dicts[word] = dicts[word]+1
            # 排序, 先按照词频降序, 再按照字母顺序升序
            dists = sorted(dicts.items(), key = lambda x: (-x[1],x[0]))
            # print(dicts)
            # 返回结果
            ans = []
            for key,_ in dists[:k]:
                ans.append(key)
            return ans

    本文来自博客园,作者:秋华,转载请注明原文链接:https://www.cnblogs.com/qiu-hua/p/14004214.html

  • 相关阅读:
    /etc/fstab详解
    awk的简单用法2
    awk的简单用法3
    linux+nginx+mysql+php高性能服务器搭建
    awk的简单用法1
    ip_conntrack: table full, dropping packet.解决办法
    快速获得 Google Maps 地图页中心位置的经纬度
    Google 地图 教程收集
    第一章 Google Api Key的申请
    第二章 Google 常用功能
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14004214.html
Copyright © 2011-2022 走看看