【牛客刷题】HJ68 成绩排序
这题本身就是一个排序题,按照学生成绩排序,成绩一样的按照输入的前后顺序排。
如果用Java,那么利用ArrayList能很轻松的完成:
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int a = in.nextInt();
int b = in.nextInt(); // 0 or 1
List<Student> list = new ArrayList<>();
for (int i = 0; i < a; i++) {
Student student = new Student(in.next(), in.nextInt());
list.add(student);
}
if (b == 1) {
list.sort(Comparator.comparingInt(Student::getGrade));
}
if (b == 0) {
list.sort((o1, o2) -> o2.getGrade() - o1.getGrade());
}
list.forEach(System.out::println);
}
}
}
class Student {
private String name;
private int grade;
public Student(String name, int grade) {
this.name = name;
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
@Override
public String toString() {
return this.name + " " + this.grade;
}
}
但是实际执行时间不容乐观,要169ms。换成Go试试看,实际上也是定义一个数据结构,但是这里要注意一点,一定要加上index表示输入顺序,事实上Java帮我们做了好多事情,一旦换了别的语言要首先适应自己的事情自己做:
package main
import (
"fmt"
"sort"
)
type Grade struct {
name string
score int
index int
}
func main() {
num := 0
fmt.Scan(&num)
flag := 0
fmt.Scan(&flag)
var grades []*Grade
for i := 0; i < num; i++ {
name := ""
score := 0
fmt.Scan(&name, &score)
grades = append(grades, &Grade{name, score, i})
}
if flag == 0 {
sort.Slice(grades, func(i, j int) bool {
if grades[i].score == grades[j].score {
return grades[i].index < grades[j].index
}
return grades[i].score > grades[j].score
})
} else {
sort.Slice(grades, func(i, j int) bool {
if grades[i].score == grades[j].score {
return grades[i].index < grades[j].index
}
return grades[i].score < grades[j].score
})
}
for _, v := range grades {
fmt.Printf("%s %d\n", v.name, v.score)
}
}
实际执行时间6ms,真棒
【牛客刷题】HJ68 成绩排序的更多相关文章
- 句子反转——牛客刷题(java)
题目描述: 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格. 比如: (1) “hello xiao mi”-> “mi xia ...
- 输出单项链表中倒数第k个结点——牛客刷题
题目描述: 输入一个单向链表,输出该链表中倒数第k个结点 输入.输出描述: 输入说明:1.链表结点个数 2.链表结点的值3.输入k的值 输出说明:第k个结点指针 题目分析: 假设链表长度为n,倒数第k ...
- 【牛客 错题集】Linux系统方面错题合集
前言:牛客Linux322道全部刷完,有些题目较老,甚至考核5系统,现在7都出来了几年了 = = 还有些题目解析的很好部分也摘录了进来.很多涉及嵌入式开发的选择题同样的摘录的作为了解使用 ------ ...
- OJ题:成绩排序
题目描述 查找和排序 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理. 例示: jack 70 peter 96 Tom 70 smit ...
- 刷题总结:排序机械臂(石室中学oj)(splay)
题目: 题目描述 为了把工厂中高低不等的物品按从低到高排好序,工程师发明了一种排序机械臂.它遵循一个简单的排序规则,第一次操作找到最低的物品位置 P1,并把从左起第 1 个至第 P1 个之间的物品反序 ...
- OJ刷题---ASCII码排序
题目要求: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGluaGFpeXVuX3l0ZHg=/font/5a6L5L2T/fontsize/400/f ...
- LeetCode刷题--26.删除排序数组中的重复项(简单)
题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成. 示例 ...
- C#LeetCode刷题之#34-在排序数组中查找元素的第一个和最后一个位置(Find First and Last Position of Element in Sorted Array)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4970 访问. 给定一个按照升序排列的整数数组 nums,和一个目 ...
- leetcode刷题-82.删除排序链表中的重复元素 II
题目 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例 1: 输入: 1->2->3->3->4->4->5输出: 1- ...
- leetcode刷题-83删除排序链表中的重复元素
题目 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 实现 # Definition for singly-li ...
随机推荐
- Mybatis.xml文件中 大于小于等于
Mybatis中 大于小于等于的转义写法第一种写法:符号 转义字符< <<= <=> >>= >=& &am ...
- ansible(1)---师傅领进门
背景 在企业里,运维需要配合开发进行产品上架,说白了就是把写好的代码上服务器.那么,就会出现这样的问题:需要运维人员配置好系统,配置好环境,配置好网络,配置好程序,配置好所有所有的依赖环境. ...
- 【BUG记录】Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xA6' for column 'name' at row 1
大家好呀,我是summo,这次的文章标题是一个Mysql数据库的SQL错误,遇到的同学自然懂,没遇到的同学希望你永远也不要遇到. 一.错误说明 Cause: java.sql.SQLException ...
- opengrok源代码在线阅读平台搭建及字体修改
服务搭建 我所编写的docker-compose.yml如下,成功运行后将源码目录移动至 /data/opengrok/src ,重启容器使得opengrok快速更新索引 services: open ...
- 『vulnhub系列』HMS-1
『vulnhub系列』HMS?-1 下载地址: https://www.vulnhub.com/entry/hms-1,728/ 信息搜集: 使用nmap进行存活主机探测,发现开启了21端口(ftp) ...
- 【论文阅读】VDBFusion: Flexible and Efficient TSDF Integration of Range Sensor Data
Type: Sensors Year: 2022 tag: Mapping 组织: Bonn 参考与前言 论文链接:https://www.ncbi.nlm.nih.gov/pmc/articles/ ...
- 全志科技T3国产工业核心板规格书(四核ARM Cortex-A7,主频1.2GHz)
1 核心板简介 创龙科技SOM-TLT3是一款基于全志科技T3处理器设计的4核ARM Cortex-A7国产工业核心板,每核主频高达1.2GHz. 核心板通过邮票孔连接方式引出CSI.TVIN.MIP ...
- Centos 下Rabbit MQ 常用操作指令 汇总
1.rabbitmq 服务的启动停止. service rabbitmq-server start service rabbitmq-server stop 重启命令需要依次执行 stop 再 sta ...
- 在OwinSelfHost项目中获取客户端IP地址
在OwinSelfHost项目中,获取客户端的IP地址可以通过以下方法获得: base.Request.GetOwinContext().Request.RemoteIpAddress 创建一个Owi ...
- Spring注解之生命周期@PostConstruct和@PreDestroy
****### 简介 从Java EE5规范开始,Servlet增加了两个影响Servlet生命周期的注解(Annotation):@PostConstruct和@PreConstruct. 这两个注 ...