leetcode692_theKFrequentWord

class Solution {
    public List<String> topKFrequent(String[] words, int k) {
        Map<String, Integer> map = new HashMap<>();
        for(String word: words) map.put(word, map.getOrDefault(word, 0) + 1);
        PriorityQueue<Map.Entry<String, Integer>> priorityQueue = new PriorityQueue<>(new Comparator<Map.Entry<String, Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> stringIntegerEntry, Map.Entry<String, Integer> t1) {
                if(stringIntegerEntry.getValue() == t1.getValue()) {
                    // ascending
                    return t1.getKey().compareTo(stringIntegerEntry.getKey());
                }
                else {
                    // deascending
                    return stringIntegerEntry.getValue() - t1.getValue();
                }
            }
        });
        for(Map.Entry<String, Integer> entry: map.entrySet()) {
            String key = entry.getKey();
            int count = entry.getValue();
            if(priorityQueue.size() == k) {
                Map.Entry<String, Integer> top = priorityQueue.peek();
                String topKey = top.getKey();
                int topCount = top.getValue();  // aaa aa
                if(count > topCount ||(count == topCount && key.compareTo(topKey) < 0)) {
                    priorityQueue.poll();
                    priorityQueue.offer(entry);

                }
            }
            else  priorityQueue.offer(entry);
        }
        List<Map.Entry<String, Integer>> list = new ArrayList<>();
        for(Map.Entry<String, Integer> entry: priorityQueue) list.add(entry);
        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> stringIntegerEntry, Map.Entry<String, Integer> t1) {
                if(stringIntegerEntry.getValue() == t1.getValue()) {
                    // ascending
                    return stringIntegerEntry.getKey().compareTo(t1.getKey());
                }
                else {
                    // deascending
                    return t1.getValue() - stringIntegerEntry.getValue();
                }
            }
        });
        List<String> list1 = new ArrayList<>();
        for(Map.Entry<String, Integer> entry: list) {
            list1.add(entry.getKey());
        }
        return list1;
    }
}

推荐这些技术文章:

黑马程序员-传智健康项目(第十一章)

传智健康项目

黑马程序员-传智健康项目(第一章)
黑马程序员-传智健康项目(第二章)
黑马程序员-传智健康项目(第三章)
黑马程序员-传智健康项目(第四章)
黑马程序员-传智健康项目(第五章)
黑马程序员-传智健康项目(第六章)
黑马程序员-传智健康项目(第七章)
黑马程序员-传智健康项目(第八章)
黑马程序员-传智健康项目(第九章)
黑马程序员-传智健康项目(第十章)
黑马程序员-传智健康项...

leetcode 451. Sort Characters By Frequency 根据字符出现频率排序

一、题目大意
https://leetcode.cn/problems/sort-characters-by-frequency
给定一个字符串 s ,根据字符出现的 频率 对其进行 降序排序 。一个字符出现的 频率 是它出现在字符串中的次数。
返回 已排序的字符串 。如果有多个答案,返回其中任何一个。
示例 1:

输入: s = "tree"
输出: "eert"
解释: 'e'出...

LinkedList, Set 和 Map

1,LinkedList
1.1 LinkedList 介绍
底层数据存储结构为双向链表
链表头:
class LinkedList<E> {
Node<E> first;
Node<E> last;
int size();
}

Node 是 LinkedList 内部类!!!
节点 N...

黑马程序员-传智健康项目(第八章)

传智健康项目

黑马程序员-传智健康项目(第一章)
黑马程序员-传智健康项目(第二章)
黑马程序员-传智健康项目(第三章)
黑马程序员-传智健康项目(第四章)
黑马程序员-传智健康项目(第五章)
黑马程序员-传智健康项目(第六章)
黑马程序员-传智健康项目(第七章)
黑马程序员-传智健康项目(第八章)
黑马程序员-传智健康项目(第九章)
黑马程序员-传智健康项目(第十章)
黑马程序员-传智健康项...

四连问:API 接口应该如何设计?如何保证安全?如何签名?如何防重?

作者:巨人大哥 来源:http://39sd.cn/A08A6在实际的业务中,难免会...

《回炉重造》——泛型

泛型
前言
以前学习到「泛型」的时候,只是浅浅的知道可以限制类型,并没有更深入理解,可以说基础的也没理解到位,只是浮于表面,所以,现在回炉重造,重学泛型!打好基础!

什么是泛型?
泛型(Generic),Generic 的意思有「一般化的,通用的」。

是 JDK 5 中引入的新特性,它提供编译时的类型安全检测,允许我们在编译时检测到非法的数据类型,本质是 参数化类型。

这里还涉及到一个词「...

Java-MyBatis-Plus

MyBatis-Plus
一、框架结构

官网地址:https://baomidou.com/
二、入门案例
2.1 开发环境
IDE:idea 2019.2
JDK:JDK8+
构建工具:maven 3.5.4
MySQL版本:MySQL 5.7
Spring Boot:2.6.3
MyBatis-Plus:3.5.1
2.2 创建数据库及表
创建表
CREATE DATABASE `myba...

ES-密码设置及JAVA应用

一、开启密码验证
(一)开启密码验证
  1、安装x-pack
  在ES6.3之前添加用户密码验证需要安装x-pack插件,在6.3之后被去掉,可以直接设置。
  在es的安装目录中,执行:

./bin/elasticsearch-plugin install x-pack

  2、设置密码
  在安装x-pack后,es的bin目录中会产生一个x-pack目录,进入该目录,进行密码设置
...

java通过模拟post方式提交表单实现图片上传功能实例

本文实例讲述了java通过模拟post方式提交表单实现图片上传功能。分享给大家供大家参考,具体如下:
模拟表单html如下:

<form action="up_result.jsp" method="post" enctype="multipart/form-data" name="form1" id="form1">
<label>
<input type=...

聊聊如何实现一个带幂等模板的Kafka消费者

前言
不知道大家有没有这样的体验,你跟你团队的成员,宣导一些开发时注意事项,比如在使用消息队列时,在消费端处理消息时,需根据业务场景,考虑一下幂等。后面走查代码的时,会发现一些资浅的开发,在需要幂等判断的场景的情况下,仍然没做幂等判断。既然宣导无效,就干脆实现一个带幂等模板的消费者,然后开发基于这个模板进行消费端业务处理。本文就以spring-kafka举例,聊聊如何实现一个带幂等模板的kafk...

文章标题:leetcode692_theKFrequentWord
文章链接:https://www.dianjilingqu.com/50942.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>