ARTS是什么?
Algorithm:每周至少做一个LeetCode的算法题 Review:阅读并点评至少一篇英文文章 Tip:学习至少一个技术技巧 Share:分享一篇有观点和思考的技术文章
Algorithm
import java.util.Comparator;import java.util.HashMap;import java.util.LinkedList;import java.util.List;/*** @className: Algorithm1* @description:* 有一排 26 个彩灯,编号从 0 到 25,现在给出了一系列控制指令来控制这些彩灯的开关。* 一开始这些彩灯都是关闭的,然后指令将逐条发出。* 在每条指令operation[i]中含有两个整数 operation[i][0], operation[i][1]。* 在接收到一条指令时,标号为 operation[i][0] 的彩灯会亮起,直到第 operation[i][1] 秒的时候熄灭。当灯熄灭后,下一条指令将会发出。也就是说,任何时候只会有一盏灯亮着。* 其中第一条指令将在第0秒的时候发出,并被立刻执行。* 你的任务是找到哪个彩灯单次亮起的时间最长。** 样例 1** 输入:* [[0,2],[1,5],[0,9],[2,15]]* 输出:* 'c'* 说明:* operation = `[[0, 2], [1, 5], [0, 9], [2, 15]]`* 在第0秒的时候,接收到指令`[0, 2]`,此时标号为 0 的灯亮起,第 2 秒的时候熄灭。此时 0号灯 的单次亮起时间为`2-0 = 2` 秒。* 在第2秒的时候,接收到指令`[1, 5]`,此时标号为 1 的灯亮起,第 5 秒的时候熄灭。此时 1号灯 的单次亮起时间为 `5-2 = 3` 秒。* 在第5秒的时候,接收到指令`[0, 9]`,此时标号为 0 的灯亮起,第 9 秒的时候熄灭。此时 0号灯 的单次亮起时间为 `9-5 = 4` 秒。* 在第9秒的时候,接收到指令`[2, 15]`,此时标号为 2 的灯亮起,第 15 秒的时候熄灭。此时 2号灯 的单次亮起时间为 `15-9 = 6` 秒。* 所以单次亮起的最长时间为 `max(2, 3, 4, 6) = 6` 秒,是标号为 `2` 的彩灯。** **你需要返回一个小写英文字母代表这个编号。`如 'a' 代表 0,'b' 代表 1,'c' 代表 2 ... 'z' 代表 25。`*** 所以你的答案应该是`'c'`* @author: Miluo* @date: 2021/8/11**/public class LintCode02 {public char longestLightingTime(List<List<Integer>> operation) {// write your code herelong maxTime = 0;char maxLight = 'a';for (int i = 1; i < operation.size(); i++) {long time = operation.get(i).get(1) -operation.get(i - 1).get(1);if (time > maxTime) {maxTime = time;maxLight = (char) ((char) 'a' + operation.get(i).get(0));}}return maxLight;}}
Review
10 excellent GitHub repositories for every Java developer
Tip
Mybatis-plus的LambdaQueryWrapper,可避免硬编码
@Data@TableName("user")public class User{@TableId(Value = "id",type = IdType.AUTO)private Long id;@TableField("name)private String name;@TableField("sex)private String sex;@TableField("phone)private String phone;}
QueryWrapper<User> wrapper = new QueryWrapper();wrapper.eq("name",name);
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper();wrapper.eq(User::getName,name);
