当前位置: 首页 > news >正文

【java|golang】多字段排序以及排序规则

  1. 奖励最顶尖的 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

public List<Integer> topStudents(String[] positive_feedback, String[] negative_feedback, String[] report, int[] student_id, int k) {Map<Integer, Integer> map = new HashMap<>();Map<String, Integer> feedback = new HashMap<>();for (String s : positive_feedback) {feedback.put(s,3);}for (String s : negative_feedback) {feedback.put(s,-1);}for (int i = 0; i < report.length; i++) {String[] split = report[i].split(" ");int sum=0;for (String s : split) {sum+=feedback.getOrDefault(s,0);}map.put(student_id[i],sum);}Comparator<Map.Entry<Integer, Integer>> comparator = (o1, o2) -> {Integer o1Value = o1.getValue();Integer o2Value = o2.getValue();return o1Value==o2Value?o1.getKey()-o2.getKey():o2Value-o1Value;};List<Map.Entry<Integer, Integer>> list = new ArrayList<>(map.entrySet());Collections.sort(list,comparator);List<Integer> res = new ArrayList<>();for (int i = 0; i < k; i++) {res.add(list.get(i).getKey());}return res;}

在这里插入图片描述

public List<Integer> topStudents(String[] positive_feedback, String[] negative_feedback, String[] report, int[] student_id, int k) {PriorityQueue<int[]> queue = new PriorityQueue<>((o1, o2) -> o1[1]==o2[1]?o1[0]-o2[0]:o2[1]-o1[1]);Map<String, Integer> feedback = new HashMap<>();for (String s : positive_feedback) {feedback.put(s,3);}for (String s : negative_feedback) {feedback.put(s,-1);}for (int i = 0; i < report.length; i++) {String[] split = report[i].split(" ");int sum=0;for (String s : split) {sum+=feedback.getOrDefault(s,0);}queue.add(new int[]{student_id[i], sum});}List<Integer> res = new ArrayList<>();for (int i = 0; i < k; i++) {res.add(queue.poll()[0]);}return res;}

在这里插入图片描述

func topStudents(positive_feedback []string, negative_feedback []string, report []string, student_id []int, k int) []int {ints := make([][2]int, 0)feedback:=make(map[string]int,0)for _, v := range positive_feedback {feedback[v]=3}for _, v := range negative_feedback {feedback[v]=-1}for i := 0; i < len(report); i++ {split:=strings.Split(report[i]," ")sum:=0for _, v := range split {sum+=feedback[v]}ints=append(ints, [2]int{student_id[i], sum})}sort.Slice(ints, func(i, j int) bool {if ints[i][1]==ints[j][1] {return ints[j][0]>ints[i][0]}return ints[i][1]>ints[j][1]})res := make([]int,0)for i := 0; i < k; i++ {res= append(res, ints[i][0])}return res
}

在这里插入图片描述

排序规则

语言排序规则升序降序
Java(o1,o2)o1-o2o2-o1
golang(i,j)i<ji>j

相关文章:

【java|golang】多字段排序以及排序规则

奖励最顶尖的 K 名学生 给你两个字符串数组 positive_feedback 和 negative_feedback &#xff0c;分别包含表示正面的和负面的词汇。不会 有单词同时是正面的和负面的。 一开始&#xff0c;每位学生分数为 0 。每个正面的单词会给学生的分数 加 3 分&#xff0c;每个负面的词…...

腾讯云 轻量云 上海 VPS 测评

description: 发布于 2023-07-05腾讯云 轻量云 上海 VPS 测评 腾讯云国内机非常稳定&#xff0c;一年用下来没有掉线丢包的情况。国内机适合与备案域名一起建站使用。带宽很小&#xff0c;图片资源使用CDN加速或海外机提供。 规格 CPU - 2核 内存 - 2GB 系统盘 - SSD云硬盘…...

消息称苹果或在明年推出搭载M3芯片的MacBook产品

近日据 DigiTimes 发布的博文&#xff0c;苹果公司计划在 2024 年推出搭载 M3 芯片的 MacBook 产品。然而&#xff0c;关于这款新产品的发布日期仍存在争议。虽然一些爆料认为苹果可能会在今年发布这款产品&#xff0c;但也有一些爆料认为发布时间会推迟到 2024 年。根据各项报…...

Generalizable NeRF in ICCV‘23

文章目录 前置知识Generalizable《Enhancing NeRF akin to Enhancing LLMs: Generalizable NeRF Transformer with Mixture-of-View-Experts》《WaveNeRF: Wavelet-based Generalizable Neural Radiance Fields》NeO 360: Neural Fields for Sparse View Synthesis of Outdoor …...

Unity2017适配安卓12

测试版本为Unity2017.4.25f1 1.在自定义AndroidManifest.xml&#xff08;位于Assets\Plugins\Android\&#xff09;中添加android:exported"true" <?xml version"1.0" encoding"utf-8"?> <manifestxmlns:android"http://schema…...

ios UI 基础开发一

目录 第一节&#xff1a;基础库 第二节&#xff1a;弹出模拟器的键盘 第三节&#xff1a;模拟器回到桌面 第四节&#xff1a;Viewcontroller 与 View 的关系 第五节&#xff1a;快捷键 第六节&#xff1a;键盘召回 ​第七节&#xff1a;启动流程xcode介绍 第八节&#xf…...

echarts一些配置项的使用

前言:我是自己最近写项目用到的,我做个整理; 一. 基本使用 1.具有大小(宽高)的div ,id唯一; 例如: <div id"crewEchart"></div> 2.在项目中引入: import * as echarts from "echarts"; 3.写一个关于他的方法,在mounted的时候调用: moun…...

python yaml库:safe_load()(安全解析函数,解析yaml)(防止yaml文件中包含恶意代码)

文章目录 Python YAML: 使用 safe_load 进行安全解析什么是 safe_load?如何使用 safe_load?为什么选择 safe_load 而非 load? Python YAML: 使用 safe_load 进行安全解析 YAML (YAML Ain’t Markup Language) 是一种人类可读的数据序列化标准。它被广泛用于配置文件、多语言…...

小程序:下拉刷新+上拉加载+自定义导航栏

下拉刷新 &#xff1a; <scroll-view scroll-y"true" 允许纵向滚动 refresher-enabled"true" 开启自定义下拉刷新 默认为false :refresher-triggered&quo…...

判断两个二叉树是否相等

bool isSameTree(struct TreeNode* p, struct TreeNode* q) {//两个都为空if(pNULL&&qNULL){return true;}//有一个为空if(pNULL||qNULL){return false;}//两个不为空&#xff0c;但值不相同if(p->val!q->val){return false;}//值相同return isSameTree(p->le…...

springcloud----检索中间件 ElasticSearch 分布式场景的运用

如果对es的基础知识有不了解的可以看 es看这个文章就会使用了 1.分布式集群场景下的使用 单机的elasticsearch做数据存储&#xff0c;必然面临两个问题&#xff1a;海量数据存储问题、单点故障问题。 海量数据存储问题&#xff1a;将索引库从逻辑上拆分为N个分片&#xff08…...

qt创建线程类并实现通信 C++

需求描述&#xff1a; 通过VS创建了一个QT项目&#xff0c;我需要一个线程类去实时获取设备取流的图像&#xff0c;并将图像传给qt的类用于在QLabel上显示。 实现&#xff1a; 头文件&#xff1a; //include ...省略//Qt界面的类Your_Project class Your_Project : public Q…...

【elasticsearch】使用自建证书搭建elasticsearch8.0.1集群

概述 本文将分享使用自建证书搭建加密的es集群&#xff0c;如果想使用rpm包安装&#xff0c;前期的搭建过程请参考上面一篇文章https://blog.csdn.net/margu_168/article/details/133344675。后续的操作与使用tar包安装的类似&#xff0c;只是需要注意目录的区别。 es8.0.1安…...

一篇文章带你用动态规划解决打家劫舍问题

动态规划的解题步骤可以分为以下五步&#xff0c;大家先好好记住 1.创建dp数组以及明确dp数组下标的含义 2.制定递推公式 3.初始化 4.遍历顺序 5.验证结果 根据打家劫舍的题意&#xff1a;两个直接相连的房子在同一天晚上被打劫会触发警报 所以我们制定出核心策略——偷东…...

idea中导入eclipse的javaweb项目——tomact服务(保姆级别)

idea中导入eclipse的javaweb项目——tomact服务&#xff08;保姆级别&#xff09; 1. 导入项目2. Project Settings下的各种配置步骤2.1 检查/修改 jdk 的引入2.2 配置Modules-Dependencies2.2.1 删掉eclipse相关的多余配置2.2.2 删掉jar包2.2.3 添加tomcat的依赖 2.3 配置Libr…...

【开源】给ChatGLM写个,Java对接的SDK

作者&#xff1a;小傅哥 - 百度搜 小傅哥bugstack 博客&#xff1a;bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 大家好&#xff0c;我是技术UP主小傅哥。 清华大学计算机系的超大规模训练模型 ChatGLM-130B 使用效果非常牛&…...

基于Pytest+Allure+Excel的接口自动化测试框架

1. Allure 简介 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具&#xff0c;它不仅以 Web 的方式展示了简介的测试结果&#xff0c;而且允许参与开发过程的每个人可以从日常执行的测试中&#xff0c;最大限度地提取有用信息。 Allure 是由 Java 语言开发的…...

20.2 FMC驱动SDRAM的时序初始化实现及内存测试

继续上一篇的话题&#xff0c;写到SDRAM通过CubeMx配置后&#xff0c;在工程代码编写时直接引用的是我事先写好的时序初始化、内存测试文件&#xff0c;而未对其进行详细的解释&#xff0c;所以本篇文章就来娓娓道来。不多说&#xff0c;开始吧 SDRAM的初始化流程简述 SDRAM初…...

联想电脑一键重装系统Win10操作方法

很多用户都会利用重装系统的方法&#xff0c;来解决系统崩溃、病毒感染等问题。但是&#xff0c;很多新手用户不知道联想电脑Win10系统重装的详细方法步骤&#xff0c;下面小编给大家详细介绍关于联想电脑Win10系统重装的操作方法&#xff0c;帮助大家轻松快速地完成系统的重装…...

Mysql数据库 1.概述

Mysql内容概述 1. Mysql概述 数据库相关概念&#xff1a; 名称 全称 简称 数据库 存储数据的仓库&#xff0c;数据是有组织的进行存储 …...

质子CT技术:原理、系统设计与临床应用

1. 质子CT技术概述&#xff1a;从原理到临床需求在放射治疗领域&#xff0c;质子治疗因其独特的布拉格峰(Bragg Peak)特性而备受关注。与传统X射线治疗相比&#xff0c;质子束在组织中沉积的能量分布具有明显的物理优势——在射程末端释放最大剂量后迅速衰减。这一特性使得肿瘤…...

从零搭建一个智能视频监控系统:3D定位、ONVIF控制与Python UI实战

从零搭建智能视频监控系统&#xff1a;3D定位、ONVIF控制与Python UI实战 在智能安防和物联网应用蓬勃发展的今天&#xff0c;具备3D定位功能的视频监控系统正成为行业新宠。本文将带您从零开始&#xff0c;基于树莓派或普通PC&#xff0c;结合支持ONVIF协议的球型摄像机&#…...

[STM32U3] 【STM32U385RG 测评】+ PWM调节控制LED

在厂家提供的例程中&#xff0c;提供了多个PWM通道输出固定占空比的示例&#xff0c;但缺少改变占空比的介绍。为此&#xff0c;作了一下自动改变占空比和按键改变占空比的尝试。这采用的是以PWM通道1输出脉冲来控制外挂LED模块的亮度&#xff0c;通道1的输出引脚为PA0&#xf…...

解锁CLIP潜力:三种高效微调策略实战解析

1. CLIP模型微调的必要性 CLIP作为多模态模型的里程碑之作&#xff0c;其zero-shot能力确实令人惊艳。但真实业务场景中&#xff0c;我们常常遇到这样的困境&#xff1a;电商平台需要区分"奶白色"和"米白色"的家具面料&#xff0c;医疗影像需要识别特定病灶…...

【免费下载】 UVM标准库源代码及用户指南资源

UVM标准库源代码及用户指南资源 简介 本仓库提供了统一验证方法论&#xff08;Universal Verification Methodology, UVM&#xff09;的多个关键版本的源代码压缩包。UVM是一种用于电子设计验证的高级验证方法学&#xff0c;由Accellera Systems Initiative开发并标准化&#x…...

XRDP 远程桌面连接 Ubuntu:从安装到优化的完整实践指南

1. 为什么选择XRDP连接Ubuntu&#xff1f; 对于需要远程管理Ubuntu系统的用户来说&#xff0c;图形化界面操作往往比纯命令行更直观高效。XRDP作为开源的远程桌面协议实现&#xff0c;相比TeamViewer等商业方案&#xff0c;它完全免费且性能出色&#xff1b;相比VNC&#xff0c…...

阿里2026最新Spring全家桶学习笔记全网首次公开!

最近小伙伴在我后台留言是这样的&#xff1a; 现在就这光景&#xff0c;不比以前&#xff0c;会个CRUD就有人要&#xff0c;即使大部分公司依然只需要做CRUD的事情......现在去面试&#xff0c;只会CRUD还要被吐槽&#xff1a; 面试造火箭&#xff0c;工作拧螺丝&#xff0c;就…...

MATLAB仿真GPS调制和捕获

一,中频数据捕获: 当捕获通道状态空闲时,启动中频数据存储,此时根据当前要捕获的卫星的来选择射频通道,并将相应的载波频率和码频率写入寄存器中,使能存储操作;当一次捕获运算完成之后,需要重新存储中频数据。 卫星选择:初始化时,将所有卫星设置为待捕获状态,用一…...

智能服装开发实战:基于NeoPixel与Arduino的动态光效设计与实现

1. 项目概述&#xff1a;打造一件会“流动”的智能光效裙几年前&#xff0c;当我第一次看到Phil Burgess的“Ooze Master 3000”代码时&#xff0c;就被那个模拟粘稠液体缓慢滴落的灯光动画迷住了。它不像普通的彩虹轮转那么直白&#xff0c;而是有一种有机的、近乎生物感的动态…...

Windows Node.js版本管理实战:NVM-Windows配置与部署解决方案

Windows Node.js版本管理实战&#xff1a;NVM-Windows配置与部署解决方案 【免费下载链接】nvm-windows A node.js version management utility for Windows. Ironically written in Go. 项目地址: https://gitcode.com/gh_mirrors/nv/nvm-windows NVM-Windows是Windows…...