龙华三网合一网站建设,wordpress 文章顺序,门户网站建设目标,免费网站管理软件蓝桥杯-考勤刷卡1、问题描述2、解题思路3、代码实现1、问题描述 小蓝负责一个公司的考勤系统, 他每天都需要根据员工刷卡的情况来确定 每个员工是否到岗。 当员工刷卡时, 会在后台留下一条记录, 包括刷卡的时间和员工编号, 只 要在一天中员工刷过一次卡, 就认为他到岗了。 现在…
蓝桥杯-考勤刷卡1、问题描述2、解题思路3、代码实现1、问题描述 小蓝负责一个公司的考勤系统, 他每天都需要根据员工刷卡的情况来确定 每个员工是否到岗。 当员工刷卡时, 会在后台留下一条记录, 包括刷卡的时间和员工编号, 只 要在一天中员工刷过一次卡, 就认为他到岗了。 现在小蓝导出了一天中所有员工的刷卡记录, 请将所有到岗员工的员工编 号列出。
输入格式 输入的第一行包含一个正整数 n, 表示一天中所有员工的刷卡记录的条数。 接下来 n 行, 每行包含一条刷卡记录, 每条刷卡记录的格式为:
HH:MM:SS ID 其中 HH:MM: SS 表示刷卡时间, HH 为一个 0 到 23 之间的两位十进制整数 (可能含前导 0 ) 表示时, MM 为一个 0 到 59 之间的两位十进制整数 (可能含前 导 0) 表示分, SS 为一个 0 到 59 之间的两位十进制整数 (可能含前导 0 ) 表 示秒, ID 为一个不含前导 0 的整数表示员工的编号。 所有记录按照刷卡时间升序排列, 可能同一时刻有多人刷卡。
输出格式 输出若干行, 每行包含一个整数, 按照从小到大的顺序输出, 表示到岗员 工的编号。
样例输入
413:05:42 10314:07:12 456715:03:00 10317:00:21 1样例输出
11034567评测用例规模与约定 对于 50% 的评测用例1≤n≤100。 对于所有评测用例1≤n≤10000员工编号为不超过10910^9109的正整数
运行限制
最大运行时间1s最大运行内存: 256M
2、解题思路 按照这个题意似乎和打卡时间没什么关系啊只是让咱把打卡数据按照员工编号的大小输出而已(只输出员工编号)但是一个用工可能同时打了多次卡所以有个去重问题。 关于去重问题简单粗暴直接用HashSet我们将所有的员工编号存入HashSet中最后按照员工编号大小排序输出即可。 关于排序问题这里为了代码简便直接使用Stream流的sorted中间操作(这个方法默认是按照自然顺序排序也可以提供一个比较器)最后使用forEach终止操作输出就行。
3、代码实现
import java.util.HashSet;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);int nscan.nextInt();HashSetInteger set new HashSet();for (int i 0; i n; i) {String next scan.next();int number scan.nextInt();set.add(number);}set.stream().sorted().forEach(System.out::println);scan.close();}
}运行结果如下 这道题比较简单就是个去重和排序。