Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm độ chênh lệch thời gian tối thiểu trong mảng JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng các mốc thời gian 24 giờ theo định dạng "Giờ:Phút". Hàm phải tìm độ chênh lệch tối thiểu tính bằng phút giữa hai mốc thời gian bất kỳ trong mảng.

Ví dụ, nếu đầu vào là:

const arr = ["23:59", "00:00"];

Thì đầu ra sẽ là:

const output = 1;

Vì độ chênh lệch tối thiểu giữa các thời gian là 1 phút.

Ví dụ

Dưới đây là mã thực hiện:

const arr = ["23:59", "00:00"];
const findMinDifference = (arr = []) => {
  const find = (str = '') => str.split(':').map(time => parseInt(time, 10));
  const mapped = arr.map((time) => {
    const [hour1, minute1] = find(time);
    return hour1 * 60 + minute1;
  });
  const sorted = [];
  let isrepeating = false;
  mapped.forEach((time) => {
    if (sorted[time] !== undefined || sorted[time + 24 * 60] !== undefined) {
      isrepeating = true;
    }
    sorted[time] = time;
    sorted[time + 24 * 60] = time + 24 * 60;
  });
  if (isrepeating) { return 0; }
  let min = Infinity;
  let prev = null;
  for (let i = 0; i < sorted.length; i++) {
    if (sorted[i] !== undefined) {
      if (prev) {
        min = Math.min(min, sorted[i] - prev);
      }
      prev = sorted[i];
    }
  }
  return min;
};
console.log(findMinDifference(arr));

Kết quả

Đầu ra trên console:

1