【LeetCode:2512. 奖励最顶尖的 K 名学生 | 模拟+哈希表+堆】

news2024/9/23 11:18:44

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ 模拟+哈希表+堆
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 2512. 奖励最顶尖的 K 名学生

⛲ 题目描述

给你两个字符串数组 positive_feedback 和 negative_feedback ,分别包含表示正面的和负面的词汇。不会 有单词同时是正面的和负面的。

一开始,每位学生分数为 0 。每个正面的单词会给学生的分数 加 3 分,每个负面的词会给学生的分数 减 1 分。

给你 n 个学生的评语,用一个下标从 0 开始的字符串数组 report 和一个下标从 0 开始的整数数组 student_id 表示,其中 student_id[i] 表示这名学生的 ID ,这名学生的评语是 report[i] 。每名学生的 ID 互不相同。

给你一个整数 k ,请你返回按照得分 从高到低 最顶尖的 k 名学生。如果有多名学生分数相同,ID 越小排名越前。

示例 1:

输入:positive_feedback = [“smart”,“brilliant”,“studious”], negative_feedback = [“not”], report = [“this student is studious”,“the student is smart”], student_id = [1,2], k = 2
输出:[1,2]
解释:
两名学生都有 1 个正面词汇,都得到 3 分,学生 1 的 ID 更小所以排名更前。
示例 2:

输入:positive_feedback = [“smart”,“brilliant”,“studious”], negative_feedback = [“not”], report = [“this student is not studious”,“the student is smart”], student_id = [1,2], k = 2
输出:[2,1]
解释:

  • ID 为 1 的学生有 1 个正面词汇和 1 个负面词汇,所以得分为 3-1=2 分。
  • ID 为 2 的学生有 1 个正面词汇,得分为 3 分。
    学生 2 分数更高,所以返回 [2,1] 。

提示:

1 <= positive_feedback.length, negative_feedback.length <= 104
1 <= positive_feedback[i].length, negative_feedback[j].length <= 100
positive_feedback[i] 和 negative_feedback[j] 都只包含小写英文字母。
positive_feedback 和 negative_feedback 中不会有相同单词。
n == report.length == student_id.length
1 <= n <= 104
report[i] 只包含小写英文字母和空格 ’ ’ 。
report[i] 中连续单词之间有单个空格隔开。
1 <= report[i].length <= 100
1 <= student_id[i] <= 109
student_id[i] 的值 互不相同 。
1 <= k <= n

🌟 求解思路&实现代码&运行结果


⚡ 模拟+哈希表+堆

🥦 求解思路
  1. 该题直接按照题目的要求进行模拟即可,求解思路较为简单。
  2. 特别说明:代码实现方式有很多,先实现,再优划。
  3. 具体求解的过程步骤请看下面代码。
🥦 实现代码
class Solution {
    public List<Integer> topStudents(String[] positive_feedback, String[] negative_feedback, String[] report, int[] student_id, int k) {
        HashMap<String,String> post=new HashMap<>();
        HashMap<String,String> nega=new HashMap<>();
        for(String s:positive_feedback) post.put(s,s);
        for(String s:negative_feedback) nega.put(s,s);
        int n=student_id.length;
        List<Integer> res=new ArrayList<>();
        PriorityQueue<int[]> queue=new PriorityQueue<>((a,b)->(a[1]!=b[1]?b[1]-a[1]:a[0]-b[0]));
        for(int i=0;i<n;i++){
            String[] str=report[i].split(" ");
            int socre=0;
            for(String st:str){
                if(post.containsKey(st)) socre+=3;
                if(nega.containsKey(st)) socre-=1;
            }
            queue.add(new int[]{student_id[i],socre});    
        }
        while(k-->0){
            res.add(queue.poll()[0]);
        }
        return res;
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1079883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

练[GYCTF2020]EasyThinking

[GYCTF2020]EasyThinking 文章目录 [GYCTF2020]EasyThinking掌握知识解题思路还得靠大佬正式开始 关键paylaod 掌握知识 ​ thinkphpV6任意文件操作漏洞&#xff0c;代码分析写入session文件的参数&#xff0c;源码泄露&#xff0c;使用蚁剑插件disable_functions绕过终端无回…

Android Native 开发 要点实录

Android Studio 中写 C 代码 android studio创建C项目_android studio native c-CSDN博客 项目配置参考 【CMake】CMakeLists.txt的超傻瓜手把手教程&#xff08;附实例源码&#xff09;_【cmake】cmakelists.txt的超傻瓜手把手教程(附实例源码)-CSDN博客 CMakeLists.txt 讲解…

一文区分路由策略和策略路由!

一、路由策略 在复杂的数据通信网络中&#xff0c;根据实际组网需求&#xff0c;往往需要实施一些路由策略对路由信息进行过滤、属性设置等操作&#xff0c;通过对路由的控制&#xff0c;可以影响数据流量转发。路由策略并非单一的技术或者协议&#xff0c;而是一个技术专题或…

MongoDB——centOS7环境Mongodb权限管理(图解版)

目录 一、MongDB权限概述1.1、MongDB权限概述1.2、MongDB权限列表 二、Mongodb权限管理示例2.1、创建账号2.1.1、创建管理员用户2.1.2、开启认证2.1.3、创建普通账号 一、MongDB权限概述 1.1、MongDB权限概述 mongodb是没有默认管理员账号&#xff0c;所以要先添加管理员账号…

界面组件DevExpress WPF v23.1 - 进一步升级数据处理能力

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

帝国cms改目录后打不开,帝国cms改目录生成后还是404

帝国CMS更改了网站域名或者栏目目录地址信息打不开的解决方法&#xff0c;一起来看看吧&#xff1a; 很多的小伙伴们&#xff0c;改了后台的系统设置里面的网站地址或者栏目目录地址&#xff0c;信息页就打不开的解决方法如下&#xff1a; 后台>系统>数据更新>更新信…

防雷排插的防雷应用以及解决方案

防雷排插是一种能够有效防止雷电对电器设备造成损坏的电源插座。防雷排插的应用&#xff0c;原理和作用如下&#xff1a; 地凯科技防雷排插的应用&#xff1a;防雷排插主要用于保护电脑&#xff0c;电视&#xff0c;音响等电子设备免受雷击或者电网过压的影响。防雷排插通常有…

Delphi如何为Win32位和Win64位不同的目标平台分别编译生成不同文件名的EXE可执行文件

实际上就是给编译生成的exe文件自动重命名不同的名称&#xff1a; 实测《Z-Gantt时间管理进度计划甘特图》Delphi 10.3.3 成功&#xff0c;网上说Delphi xe3 以上版本都可以&#xff0c; delphi 7 不可以。 进入 Project Options - Build Events &#xff0c; 然后在 post-bui…

华为云云耀云服务器L实例评测 | 实例评测使用之硬件参数评测:华为云云耀云服务器下的 Linux 磁盘目录分析神器 ncdu

华为云云耀云服务器L实例评测 &#xff5c; 实例评测使用之硬件参数评测&#xff1a;华为云云耀云服务器下的 Linux 磁盘目录分析神器 ncdu 介绍华为云云耀云服务器 华为云云耀云服务器 &#xff08;目前已经全新升级为 华为云云耀云服务器L实例&#xff09; 华为云云耀云服务器…

【C++进阶】:智能指针

智能指针 一.为什么需要智能指针二.智能指针的原理和使用1.RALL2.auto_ptr3.unique_ptr4.shared_ptr 一.为什么需要智能指针 主要两点原因&#xff1a; 1.为了避免写代码时忘记delete导致的内存泄漏。 2.为了避免抛异常时跳过delete导致的内存泄漏。 1.new本身有可能出现异常&…

如何导出带有材质的GLB模型?

1、为什么要使用 GLB 模型? GLB格式&#xff08;GLTF Binary&#xff09;是一种用于存储和传输3D模型及相关数据的文件格式&#xff0c;具有以下优点和作用&#xff1a; 统一性&#xff1a;GLB是一种开放标准的3D文件格式&#xff0c;由Khronos Group制定和维护。它融合了GL…

BUUCTF [BJDCTF2020]JustRE 1

查看文件信息 使用IDA打开 shift F12搜索字符串 发现类似flag的字符串 点进去 一路跟踪到汇编窗口&#xff0c;然后F5 sprintf将格式化后的字符串输出到String中 最终String的值为 printf("BJD{%d%d2069a45792d233ac}",19999,0);也就是 BJD{1999902069a45792d…

混淆技术研究笔记(四)反篡改介绍

先来看看AI的介绍&#xff0c;为了防止Java代码打包的JAR包被篡改&#xff0c;可以采取以下几种措施&#xff1a; 使用数字签名&#xff1a;可以使用Java的签名工具&#xff08;如Jarsigner&#xff09;对JAR包进行数字签名。签名可以确保JAR包的完整性和来源可信性。在验证JAR…

【eNSP】VLAN基础配置

一、基于接口划分VLAN&#xff08;Access接口和Trunk接口&#xff09; 1、创建VLAN LSW1 [LSW1]vlan batch 10 20 Info: This operation may take a few seconds. Please wait for a moment...done.LSW2 [LSW2]vlan batch 10 20 Info: This operation may take a few second…

女性必看——“黄体破裂”到底有多可怕?

前几天的亚运会上发生了这样一件事&#xff1a; 雅思敏&#xff08;化名&#xff09;是一名国外皮划艇运动员&#xff0c;在亚运会上奋力完成皮划艇比赛后&#xff0c;突然开始 剧烈腹痛、面色苍白&#xff0c;大汗淋漓&#xff0c;经过进一步检查&#xff0c;确诊卵巢黄体破裂…

三点式振荡器

相关说明 http://www.360doc.com/content/19/0527/16/61619294_838545271.shtml 高频信号发生器设计—电容三点式振荡电路_电容三点式振荡电路工作原理_北辰-尘的博客-CSDN博客 如上图所示&#xff0c;典型的Colpitts振荡电路。首先忽略所有的电阻&#xff0c;他们是用来设置…

Windows11与CentOS7.9 2009下安装配置nginx后启动整个项目

Nginx是一款高性能的开源Web服务器和反向代理服务器&#xff0c;被广泛用于构建现代化的Web应用和提供静态内容。 一、Windows11下安装配置nginx 1.1 下载 nginx官网 这里下载nginx-1.24.0-zip 下载完成后&#xff0c;解压到D:\develop\nginx-1.24.0&#xff0c;解压完成后在…

P1969 [NOIP2013 提高组] 积木大赛

思路&#xff1a; ACcode: #include<bits/stdc.h> using namespace std; #define int long long const int N1e510; int n,a[N],ans; void solve() {cin>>n;for(int i1;i<n;i)cin>>a[i];int ans0;for(int i1;i<n;i){if(a[i]>a[i-1]) ansa[i]-a[i-1…

C语言,序列中删除指定数字

题目考点&#xff1a;对continue的运用&#xff08;也可以用&#xff01;来实现&#xff09; 先创建一个数组&#xff0c;数组大小应该要根据题目要求&#xff0c;根据数据范围&#xff0c;要设立一个大小为50的数组。 接着用scanf输入n的值&#xff0c;再设一个循环&#xff…