没事刷刷题之-数组列表中的最大距离

January 01, 2017

题目

给定 m 个数组,每个数组都已经按照升序排好序了。现在你需要从两个不同的数组中选择两个整数(每个数组选一个)并且计算它们的距离。两个整数 a 和 b 之间的距离定义为它们差的绝对值 |a-b| 。你的任务就是去找到最大距离

输入: 
[[1,2,3],
 [4,5],
 [1,2,3]]
输出: 4
解释:
一种得到答案 4 的方法是从第一个数组或者第三个数组中选择 1,同时从第二个数组中选择 5 。

代码

function maxDistance(list) {
  let res = 0,
    min_val = list[0][0],
    max_val = list[0][list[0].length - 1]

  for (let i = 1; i < list.length; i++) {
    res = Math.max(
      res,
      Math.max(
        Math.abs(list[i][list[i].length - 1] - min_val),
        Math.abs(max_val - list[i][0])
      )
    )
    min_val = Math.min(min_val, list[i][0])
    max_val = Math.max(max_val, list[i][list[i].length - 1])
  }
  return res
}

目录