努力经营当下,直至未来明朗!
文章目录
- 一、选择
- 二、编程
- 最小时间差
- 答案
- 1. 选择
- 2. 编程
普通小孩也要热爱生活!
一、选择
- 散列技术中的冲突是指( )
A. 两个元素具有相同的序号
B. 两个元素的键值不同,而其他属性相同
C. 数据元素过多
D 不同键值的元素对应于相同的存储地址
- 以下哪些是lambda表达式的重要特征【多选】( )
A. 不需要声明参数类型,编译器可以统一识别参数值。
B. 一个参数无需定义圆括号,但多个参数需要定义圆括号
C. 如果主体包含了一个语句,就不需要使用大括号
D. 如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值
二、编程
最小时间差
LeetCode539.最小时间差
给定一个 24 小时制(小时:分钟 “HH:MM”)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。
答案
1. 选择
- 对于两个数据元素的关键字,他们的值不同,但是不同关键字通过相同哈希哈数计算出相同的哈希地址,该种现象称为哈希冲突或哈希碰撞。
即:哈希冲突/碰撞:不同的关键字通过相同哈希函数计算出相同的哈希地址/存储地址。
故:选D
- ① lambda允许通过表达式来代替接口功能。
② lambda基本语法:(parameters参数) -> expression表达式 或 (parameters参数) ->{ statements;语句块 }
③ 参数的类型可以省略(如果省略就全部省略),如果参数只有一个可以不使用()
④ 如果是只有一条语句就可以省略{};如果是return,则可以省略return直接写return之后的内容
参考:Lambda
故:选ABCD
- 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:
① 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值;
② 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值;
③ 它的左右子树也分别为二叉搜索树
小结:二叉搜索树/二叉排序树:空树 or (左子树<根结点&&右子树>根结点)
- ① 枚举类型是一种特殊的数据类型,它是一种类(class)类型却又比类类型多了些特殊的约束。
② 枚举类型不属于基本数据类型。
2. 编程
最小时间差
1)思路:
① 关键是00:00的处理!
② 将时间转换为统一单位(min),即:小时*60+分钟
③ 然后将转换好的分钟存入数组中并排序,这样通过两两相邻的比较就可以获取目前的最小分钟数
④ 注意到题目对 “23:59” 和 "00:00"的时间差记为 1,而我们计算的结果为 23*60+59-0 ,不符合要求。【其实就是最小、最大之间也要计算】
⑤ 所以,还需要把最小的时间和最大的时间也对比。我们 只需要将一天的分钟数24*60 减去最大时间和最小时间的差即可。即最后还需要比较24*60+最小时间-最大时间
。
2)注意:
① 最大、最小时间的比较单独处理!
② 注意字符串转为整型方法!Integer.valueOf("");
③ 注意获取子串的subString的参数是前闭后开
④ 注意取最小值的方法Math.min(int a,int b);
3)代码:
import java.util.Arrays;
import java.util.List;
class Solution {
public int findMinDifference(List<String> timePoints) {
// 首先定义一个最小值,用来表示当前的最小时间差
// 可以去整型最大值,后续就可以直接进行比较厚替换
int min = Integer.MAX_VALUE;
// 定义一个数组,用来存储转换后的分钟数,长度是时间个数
int[] minutes = new int[timePoints.size()];
// 开始进行分钟的转换,并存入数组
for (int i = 0; i < timePoints.size(); i++) {
// 注意:前闭后开
// get(i)是获取链表的i下标位置的String
minutes[i] = Integer.valueOf(timePoints.get(i).substring(0,2))*60
+ Integer.valueOf(timePoints.get(i).substring(3,5));
}
// 存入数组后进行升序排列
Arrays.sort(minutes);
// 遍历数组两两相邻比较,并计算出当前最小值
for (int i = 0; i < minutes.length-1; i++) {
min = Math.min(min,minutes[i+1]-minutes[i]);
}
// 单独处理最大最小,并与min比较确定最终min值
return Math.min(min,24*60-(minutes[minutes.length-1]-minutes[0]));
}
}