dhru商城网站建设,wordpress搜索表单,微讯信息群号1000000,手机做网站的网站奖励最顶尖的 K 名学生
给你两个字符串数组 positive_feedback 和 negative_feedback #xff0c;分别包含表示正面的和负面的词汇。不会 有单词同时是正面的和负面的。
一开始#xff0c;每位学生分数为 0 。每个正面的单词会给学生的分数 加 3 分#xff0c;每个负面的词…奖励最顶尖的 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-12 分。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 ListInteger topStudents(String[] positive_feedback, String[] negative_feedback, String[] report, int[] student_id, int k) {MapInteger, Integer map new HashMap();MapString, 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 sum0;for (String s : split) {sumfeedback.getOrDefault(s,0);}map.put(student_id[i],sum);}ComparatorMap.EntryInteger, Integer comparator (o1, o2) - {Integer o1Value o1.getValue();Integer o2Value o2.getValue();return o1Valueo2Value?o1.getKey()-o2.getKey():o2Value-o1Value;};ListMap.EntryInteger, Integer list new ArrayList(map.entrySet());Collections.sort(list,comparator);ListInteger res new ArrayList();for (int i 0; i k; i) {res.add(list.get(i).getKey());}return res;}public ListInteger topStudents(String[] positive_feedback, String[] negative_feedback, String[] report, int[] student_id, int k) {PriorityQueueint[] queue new PriorityQueue((o1, o2) - o1[1]o2[1]?o1[0]-o2[0]:o2[1]-o1[1]);MapString, 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 sum0;for (String s : split) {sumfeedback.getOrDefault(s,0);}queue.add(new int[]{student_id[i], sum});}ListInteger 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 {sumfeedback[v]}intsappend(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-o1golang(i,j)ijij