zoukankan      html  css  js  c++  java
  • leetcode 692. 前K个高频单词

    692. 前K个高频单词

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

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

    ​ 主要使用 [ 优先队列 ]+ [ 哈希表 ]

    ​ 哈希表保存单词出现的频率 , 优先队列保存他的优先级顺序。

    class Solution {
        public List<String> topKFrequent(String[] words, int k) {
            // key: String
            // value: int
            Map<String, Integer> map = new HashMap();
            Queue<Map.Entry<String, Integer>> queue = new PriorityQueue<>((e, v) -> {
                if (e.getValue() - v.getValue() == 0) {
                    return e.getKey().compareTo(v.getKey()); // 
                } else {
                    return v.getValue() - e.getValue(); // 小根堆 ,频率大的在前面
                }
            });
            
            for (String word : words) {
                map.put(word, map.getOrDefault(word, 0) + 1);
            }
            for (Map.Entry<String, Integer> entry : map.entrySet()) {
                queue.offer(entry);
            }
            List<String> res = new ArrayList<>();
    
            while (!queue.isEmpty() && k!=0) {
                res.add(queue.poll().getKey());
                k--;
            }
            return res;
            // ["i","love","coding","leetcode"]
        }
    }
    
  • 相关阅读:
    Unity Shader入门精要学习笔记
    Unity Shader入门精要学习笔记
    zabbix_server部署,启动,及端口未监听问题
    Linux Git服务器安装
    GitHub
    nginx 认证访问web
    Jenkins可持续集成
    svn
    mariadb安装配置
    nginx跟tp5无法加载控制器
  • 原文地址:https://www.cnblogs.com/Lsummer-/p/14792136.html
Copyright © 2011-2022 走看看