面试的时候收到一个算法题,头疼,解不出来?
2021-06-03 11:27:45 +08:00
eluotao
给一个时间戳:
[1622684132, 1622340684, 1609467684, 1620269348, 1622170244, 1620183031, 1621997539, 1622084071, 1620097772, 1620211821, 1620125850, 1609499515, 1622375884, 1622290033, 1622031560, 1622557942]
判断条件如下:
要求在指定时间范围
不能在多组结果中出现重复时间 出现重复 以条数多的为准
有时间在两租数字范围中同时成立时,只取最近的那一组
要求每组结果 >= 3 条才能成立
根据这个条件找出以下的结果
例如: 指定范围 60 分钟 = 3600 秒
第一步 取出指定时间范围的 list 得到以下结果
[1622684132, 1622340684, 1609467684]
[1622340684, 1609467684, 1620269348, 1622170244, 1620183031, 1621997539, 1622084071, 1620097772]
[1620211821, 1620125850, 1609499515]
[1609499515, 1622375884, 1622290033, 1622031560]
第二步 判断重复时间
发现 第一 第二 是有重复时间 1609467684 的
所以只取条数最多的 list
也就是第一条作废 保留第二条
第三 第四 有重复时间 1609499515
只保留 第四条
第三步 如果有重复时间在两组数列条数一样 取时间最近的那一组
没有此条件的结果 跳过
第四部 要求结果>= 3 条
根据这个最终筛选条件
符合的是
[1622340684, 1609467684, 1620269348, 1622170244, 1620183031, 1621997539, 1622084071, 1620097772]
[1609499515, 1622375884, 1622290033, 1622031560]
输出这两个 list 即可
有没有算法大佬请教一下 这种题目怎么做?
1 条回复
eluotao
2021-06-03 12:00:38 +08:00
补充一下:
只计算小时 分钟 的相差
不计算年月日
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/781085
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.