外包没眼力见,抽烟不给我发一根怎么办?
刚看到个贴子,说有网友吐槽外包没眼力见,抽烟不给他发一根。
下面评论直接来了句:“别给他吃零食。”哈哈,这对答倒是挺社会的。
我觉得这事吧,表面上是根烟的事,实质上是人情分寸。职场里抽烟聊天,本来就是种社交信号,有的人抽烟是真放松,有的人则是顺便拉近关系。
外包没递烟,不代表他不懂事,也许只是觉得不熟,不想被误会。
你不主动,我也懒得客气。 不过话说回来,一根烟、一句寒暄,别太当真。真正有眼力见,不在于递不递烟,而在于能不能在工作上彼此成就。烟抽完了事,人情才是长久的。【备注:文末可领最新资料】
算法题:最小时间差
昨晚十一点多在公司楼下吹风,手机又响,有人问“东哥最小时间差咋写啊?”我一愣,说的就是给一堆"HH:MM"求任意两点之间最小分钟差那个,对吧。别急,我边喝奶茶边跟你唠。
就是一天1440分钟绕一圈儿,给你很多时间点,找两两之间最小的间隔。注意跨零点,比如23:58和00:01其实差3分钟。还有个坑:有完全相同的时间,答案直接0,别多想。
第一种,最顺手:把所有时间转成分钟,排序,然后相邻比一圈,最后别忘了首尾跨天那一对。好处是写得快,坏处是O(n log n)。
第二种,稍微精致点:用一个长度1440的布尔桶。每个分钟位上打勾;一旦发现同分钟重复,立刻0。扫一遍求相邻差,再加上首尾跨天差。因为桶大小固定,这个是O(n)+O(1440),也就是O(1440),稳。
我一般面试就直接上桶,省事儿还显得你懂题。
import java.util.*;
publicclassMinTimeGap{
// 主函数:返回最小时间差(分钟)
publicintfindMinDifference(List<String> timePoints){
// 鸽巢原理:若超过1440个,一定有重复 => 0
if (timePoints.size() > 1440) return0;
boolean[] seen = newboolean[1440];
for (String t : timePoints) {
int m = toMinutes(t);
if (seen[m]) return0; // 重复时间
seen[m] = true;
}
int first = -1, prev = -1, min = Integer.MAX_VALUE;
for (int i = 0; i < 1440; i++) {
if (!seen[i]) continue;
if (first == -1) first = i;
if (prev != -1) min = Math.min(min, i - prev);
prev = i;
}
// 跨零点:首 + 1440 - 尾
min = Math.min(min, (first + 1440) - prev);
return min;
}
privateinttoMinutes(String s){
// "HH:MM"
int h = (s.charAt(0) - '0') * 10 + (s.charAt(1) - '0');
int m = (s.charAt(3) - '0') * 10 + (s.charAt(4) - '0');
return h * 60 + m;
}
// 小测一下
publicstaticvoidmain(String[] args){
MinTimeGap sol = new MinTimeGap();
System.out.println(sol.findMinDifference(Arrays.asList("23:59","00:00"))); // 1
System.out.println(sol.findMinDifference(Arrays.asList("00:00","23:58","00:02"))); // 2
System.out.println(sol.findMinDifference(Arrays.asList("12:30","12:30"))); // 0
}
}
那个…跨天别忘了。排序法要把min(ans, first+1440-last)也算上;桶法就是上面那句。还有,输入有时候会很多,但分钟只有1440种,所以先用“超过1440直接0”这招,省时间。转分钟别用split一顿切,像上面那样直接字符减'0'更快,面试官看到会点头的那种。
桶法时间O(1440),空间O(1440)。边界:重复时间返回0;只有一个时间点按题目一般不会给,但真给了就随便返回0或约定值,面试时问清楚;空列表同理。还有,"24:00"通常不出现(无效),如果题源不干净,你要校验一下范围。
行了,我先去给小李回消息,他又把定时任务写成了while(true)…你们先把这段抄到IDE里跑一把,过样例心里就有底了。
-END-
我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html