首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在数组中找出两次之间的最短差

在数组中找出两次之间的最短差
EN

Stack Overflow用户
提问于 2022-08-01 19:56:21
回答 1查看 178关注 0票数 -1

我有以下strArr数组

“下午1:10”、“凌晨4:40”、“下午5:00”

现在,我试图找到最短的时间差之间的分钟以上的时间列表。

在上面的数组中,它应该会给我230号。

所有的时间都是12小时的。(HH:上午/下午)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function TimeDifference(strArr) { 

  // code goes here  
  return strArr; 

}
   
// keep this function call here 
console.log(TimeDifference(readline()));
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-04 01:52:09

因为您需要以分钟为单位的结果,所以首先我会将所有的值转换为分钟:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
strArr.map((time) => /(\d{1,2}):(\d{1,2})(am|pm)/.exec(time).slice(1))
  .map(([hour, min, midday]) =>
    (Number(hour) + (midday === `pm` ? 12 : 0)) * 60 + Number(min))

然后,我把它从最小到最大排序,这样我们就可以比较n(i)和n(i + 1):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.sort((a, b) => (a > b ? 1 : a < b ? -1 : 0))

在我们在几分钟内整理好时间后,我们需要找出不同之处。这是一个有趣的部分,因为我们还需要考虑整个24小时的时间差异,例如11:59pm - 0:01am应该返回2分钟。如果我们现在进行n(i + 1) - n(i)的简单减法,在这种情况下我们会得到一个错误的结果。这是我的解决方案(尽管我认为还有更好的):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const WHOLEDAY = 60 * 24;

const findDifference = (a, b) => {
  let diff = 0;
  while (a != b) {
    a = (a + 1) % WHOLEDAY;
    diff += 1;
  }
  return diff;
};

strArr.map((v, i, arr) => findDifference(v, arr[(i + 1) % arr.length]));

为了避免丢失最近的时间和最早的时间(第二天)之间的差异,我们需要比较最后一个值和第一个值。

然后我们要做的就是把它缩小到最小的差别:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
strArr.reduce((a, b) => (a < b ? a : b));

这就是你要的。不过,当输入错误时,我并不关心这些情况。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const arr1 = ["1:10pm", "4:40am", "5:00pm"];
const arr2 = ["11:50pm", "0:30am"];
const arr3 = ["4:23am", "4:25am", "4:26am", "4:28am"];
const arr4 = ["0:00am"];

const WHOLEDAY = 60 * 24;

const findDifference = (a, b) => {
  let diff = 0;
  while (a != b) {
    a = (a + 1) % WHOLEDAY;
    diff += 1;
  }
  return diff;
};

const timeDifference = (strArr) =>
  strArr
    .map((time) => /(\d{1,2}):(\d{1,2})(am|pm)/.exec(time).slice(1))
    .map(([hour, min, midday]) =>
      (Number(hour) + (midday === `pm` ? 12 : 0)) * 60 + Number(min))
    .sort((a, b) => (a < b ? -1 : a > b ? 1 : 0))
    .map((v, i, arr) => findDifference(v, arr[(i + 1) % arr.length]))
    .reduce((a, b) => (a < b ? a : b));

console.log(timeDifference(arr1)); // 230
console.log(timeDifference(arr2)); // 40
console.log(timeDifference(arr3)); // 1
console.log(timeDifference(arr4)); // 0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73201816

复制
相关文章
3。leetcode在2N的数组中找出
1.题目: In a array A of size 2N, there are N+1 unique elements, and exactly one of these elements is repeated N times.
py3study
2020/01/02
7050
LeetCode(1)-找出数组中重复的数字
//找出数组中重复的数字。 // // //在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请 //找出数组中任意一个重复的数字。 // // 示例 1: // // 输入: //[2, 3, 1, 0, 2, 5, 3] //输出:2 或 3 // // // // // 限制: // // 2 <= n <= 100000 // Related Topics 数组 哈希表 im
手撕代码八百里
2020/07/29
1.2K0
数组中数对差最大
数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11(16 - 5)
阳光岛主
2019/02/19
2.3K0
LeetCode 1394. 找出数组中的幸运数
在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。
freesan44
2020/06/03
4180
LeetCode 1394. 找出数组中的幸运数
[1] 1394. 找出数组中的幸运数: https://leetcode-cn.com/problems/find-lucky-integer-in-an-array/
村雨遥
2020/04/10
3790
#7 找出数组中第k小的数
给定一个整数数组,如何快速地求出该数组中第k小的数。假如数组为[4,0,1,0,2,3],那么第三小的元素是1
py3study
2020/02/10
6940
找出两数组的不同
给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,请你返回一个长度为 2 的列表 answer ,其中:
算法与编程之美
2022/05/23
8260
【LeetCode】找出数组中重复的数字day01
题目 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的, 但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 限制: 2 <= n <= 100000 解题思路 暴力搞,双层for循环,第一层的第一个元素和全数组比较。遇到就return 空间换时间,那就是利用set的属性不可以进行重复add元素。则会fasle,那
袁新栋-jeff.yuan
2020/08/26
6040
剑指offer(一):找出数组中重复的数字
在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为 7 的数组 {2, 3, 1, 0, 2, 5, 3},那么对应的输出是重复的数字 2 或者 3。
程序员小浩
2020/08/04
6520
剑指offer之找出数组中重复的数字
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
周杰伦本人
2022/10/25
2830
C语言 | 找出二维数组中的鞍点
例64:C语言实现找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
小林C语言
2021/01/19
3K0
C语言 | 找出二维数组中的鞍点
找出数组中只出现一次的数字
可以使用异或或来解决这个问题,因为两个相同的数异或之后就是0,0与一个数异或还是这个数,而且异或满足交换律
用户9996207
2023/01/13
6050
LeetCode 2150. 找出数组中的所有孤独数字(哈希)
给你一个整数数组 nums 。如果数字 x 在数组中仅出现 一次 ,且没有 相邻 数字(即,x + 1 和 x - 1)出现在数组中,则认为数字 x 是 孤独数字 。
Michael阿明
2022/03/10
4620
LeetCode 2200. 找出数组中的所有 K 近邻下标
给你一个下标从 0 开始的整数数组 nums 和两个整数 key 和 k 。 K 近邻下标 是 nums 中的一个下标 i ,并满足至少存在一个下标 j 使得 |i - j| <= k 且 nums[j] == key 。
Michael阿明
2022/11/27
9990
在 Linux 中找出 CPU 占用高的进程
你可能也会遇到在 Linux 系统中找出 CPU 占用高的进程的情形。如果是这样,那么你需要列出系统中 CPU 占用高的进程列表来确定。我认为只有两种方法能实现:使用 top 命令 和 ps 命令。出于一些理由,我更倾向于用 top 命令而不是 ps 命令。但是两个工具都能达到你要的目的,所以你可以根据需求决定使用哪个。这两个工具都被 Linux 系统管理员广泛使用。 1) 怎样使用 top 命令找出 Linux 中 CPU 占用高的进程 在所有监控 Linux 系统性能的工具中,Linux 的 top 命令是最好的也是最知名的一个。top 命令提供了 Linux 系统运行中的进程的动态实时视图。它能显示系统的概览信息和 Linux 内核当前管理的进程列表。它显示了大量的系统信息,如 CPU 使用、内存使用、交换内存、运行的进程数、目前系统开机时间、系统负载、缓冲区大小、缓存大小、进程 PID 等等。默认情况下,top 命令的输出结果按 CPU 占用进行排序,每 5 秒中更新一次结果。如果你想要一个更清晰的视图来更深入的分析结果,以批处理模式运行 top 命令 是最好的方法。同时,你需要 理解 top 命令输出结果的含义 ,这样才能解决系统的性能问题。
用户2590762
2021/08/11
4K0
在Eclipse中中tomcat会启动两次
Eclipse中使用自己安装的tomcat时默认web工程发布路径是wtpwebapps,而不是webapps,如果修改为webapps,此时在Eclipse中启动tomcat时,tomcat会加载两次。解决办法,删除掉tomcat重新添加一次,添加的时候注意不要点击下一步,直接点击完成,然后在Eclipse中修改tomcat的加载路径参数,如果点击下一步直接发布项目了,就无法修改项目发布到tomcat安装目录下还是Eclipse的目录下了。
西门呀在吹雪
2020/11/09
1.1K0
LeetCode 1394. 找出数组中的幸运数(map计数)
在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。
Michael阿明
2020/07/13
6580
2022-06-08:找到非负数组中拥有“最大或的结果“的最短子数组,返回最短长度。
2022-06-08:找到非负数组中拥有"最大或的结果"的最短子数组,返回最短长度。
福大大架构师每日一题
2022/06/08
1K0
2022-06-08:找到非负数组中拥有“最大或的结果“的最短子数组,返回最短长度。
【TypeScript】中的数组和元组之间的关系
数组概念: 数组即一组数据,它把一系列具有相同类型的数据组织在一起,成为一个可操作的对象。
痴心阿文
2022/11/21
2.8K0
【TypeScript】中的数组和元组之间的关系
结构体数组在函数之间传递数据
明的数组,进行函数调用时,实参将数组名中存放的数组首地址传递给形参数组名。这样,实参数组名和形参名代表的是同一个结构体数组,因此在被调函数中对数组元素结构体变量的值进行修改后,回到主调函数通过实参数组名访问数组时,可以发现这个改变。
pigeon
2022/04/11
1.9K0
结构体数组在函数之间传递数据

相似问题

数组元素之间的最短差

10

在numpy中找出坐标之间的欧氏差

10

找出两次之间的差异

10

找出两次之间的差异

70

找出java中两次之间的差异。

43
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文