lmislm / lmislm.github.io

hexo的配置
0 stars 0 forks source link

简单求交集 #21

Open lmislm opened 8 months ago

lmislm commented 8 months ago
const times = [
  {
    startTime: "2023-04-20T16:00:00.000Z",
    endTime: "2023-04-20T16:00:00.000Z",
  },
  {
    startTime: "2023-04-21T12:00:00.000Z",
    endTime: "2023-04-21T13:00:00.000Z",
  },
  {
    startTime: "2023-04-21T15:00:00.000Z",
    endTime: "2023-04-21T19:00:00.000Z",
  },
  {
    startTime: "2023-04-22T12:00:00.000Z",
    endTime: "2023-04-22T16:00:00.000Z",
  },
  {
    startTime: "2023-04-22T18:00:00.000Z",
    endTime: "2023-04-22T22:00:00.000Z",
  },
  {
    startTime: "2023-04-23T11:00:00.000Z",
    endTime: "2023-04-23T22:00:00.000Z",
  },
];

const time1 = {
  // yes
  startTime: "2023-04-21T14:00:00.000Z",
  endTime: "2023-04-21T18:00:00.000Z",
};

const time2 = {
  // no
  startTime: "2023-04-22T16:10:00.000Z",
  endTime: "2023-04-22T17:00:00.000Z",
};

// 给出一些时间区间times, 输入time1或者time2,判断是否和times有交集, 给出解决方法

function hasOverlapWithTimes(time, times) {
  for (const interval of times) {
    if (
      time.startTime <= interval.endTime &&
      time.endTime >= interval.startTime
    ) {
      return true;
    }
  }
  return false;
}

// 示例用法
const time1HasOverlap = hasOverlapWithTimes(time1, times);
const time2HasOverlap = hasOverlapWithTimes(time2, times);
console.log("time1 和时间区间times是否有交集:", time1HasOverlap);
console.log("time2 和时间区间times是否有交集:", time2HasOverlap);