leetcode 692. Top K Frequent Words 题解

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

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

示例 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 次。

注意:

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

扩展练习:

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

【说明】最近尝试看了一些java,感觉的确要比C++简单不少,也尝试着使用一些java集合做些题目,这道题本身并不难,以下是java代码:

class Solution {
    public List<String> topKFrequent(String[] words, int k) {
        List<String> res = new ArrayList<>();
        Map<String,Integer> d = new HashMap<>();
        for(String s:words) {
            if(d.get(s) == null){
                d.put(s,1);
            }else{
                d.put(s,d.get(s)+1);
            }
        }
        PriorityQueue<Map.Entry<String,Integer>> pp = new PriorityQueue<>((x,y)->{
            if(x.getValue() < y.getValue()) return 1;
            else if(x.getValue() > y.getValue()) return -1;
            else return x.getKey().compareTo(y.getKey());
        });
        for(Map.Entry<String,Integer> i:d.entrySet()){
            pp.add(i);
        }
        for(int i = 0; i<k; ++i){
            String temp = pp.peek().getKey();
            res.add(temp);
            pp.poll();
        }
        return res;
    }
}

感觉和C++差不多,匿名类也如出一辙

原文地址:https://www.cnblogs.com/J1ac/p/9728878.html

时间: 2024-10-11 10:36:28

leetcode 692. Top K Frequent Words 题解的相关文章

#Leetcode# 692. Top K Frequent Words

https://leetcode.com/problems/top-k-frequent-words/ Given a non-empty list of words, return the k most frequent elements. Your answer should be sorted by frequency from highest to lowest. If two words have the same frequency, then the word with the l

[LeetCode][Python]Top K Frequent Elements

op K Frequent Elements Given a non-empty array of integers, return the k most frequent elements. For example,Given [1,1,1,2,2,3] and k = 2, return [1,2]. Note: You may assume k is always valid, 1 ≤ k ≤ number of unique elements. Your algorithm's time

692. Top K Frequent Words

https://leetcode.com/problems/top-k-frequent-words/description/ class ComparisonClass { public: bool operator() (pair<int,string> p1, pair<int,string> p2) { return p1.first < p2.first || p1.first == p2.first && p1.second > p2.sec

692. Top K Frequent Words - Medium

Given a non-empty list of words, return the k most frequent elements. Your answer should be sorted by frequency from highest to lowest. If two words have the same frequency, then the word with the lower alphabetical order comes first. Example 1: Inpu

347. Top K Frequent Elements/692. Top K Frequent Words

Given a non-empty array of integers, return the k most frequent elements. Example 1: Input: nums = [1,1,1,2,2,3], k = 2 Output: [1,2] Example 2: Input: nums = [1], k = 1 Output: [1] 非常经典的一道题,有以下几点:1. 按照frequent 排序, 显然要建立 num : freq 的 map对, 定义 map_fre

[LeetCode] 347. Top K Frequent Elements 解题思路 - Java

Given a non-empty array of integers, return the k most frequent elements. For example,Given [1,1,1,2,2,3] and k = 2, return [1,2]. Note: You may assume k is always valid, 1 ≤ k ≤ number of unique elements. Your algorithm's time complexity must be bet

Java [Leetcode 347]Top K Frequent Elements

题目描述: Given a non-empty array of integers, return the k most frequent elements. For example,Given [1,1,1,2,2,3] and k = 2, return [1,2]. Note: You may assume k is always valid, 1 ≤ k ≤ number of unique elements. Your algorithm's time complexity must

LeetCode 347. Top K Frequent Elements

https://leetcode.com/problems/top-k-frequent-elements/ Lambda http://baike.baidu.com/link?url=ZK0qILx8cb_8HUX13JvVUYdnlJBOvAPJdWF83wD-tDgQQwIQYAVzkhytf_3f7oidHLPeTyXSswQUWVW51W42Ri4Pp8vnnkFHBCloSSTyS9xIT2pAV8a2zknUKK1UkjhDMzr4O7-qrD6J-lkJxET4u_#4 C++

LeetCode OJ 347. Top K Frequent Elements hashmap+排序求解

题目链接:https://leetcode.com/problems/top-k-frequent-elements/. 347. Top K Frequent Elements My Submissions QuestionEditorial Solution Total Accepted: 15510 Total Submissions: 36453 Difficulty: Medium Given a non-empty array of integers, return the k mo