mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-05-28 18:26:54 +00:00
81 lines
2.3 KiB
Markdown
81 lines
2.3 KiB
Markdown
---
|
|
id: 69f35a5bb823ed620fcb7cbe
|
|
title: "Challenge 285: Meeting Time"
|
|
challengeType: 28
|
|
dashedName: challenge-285
|
|
---
|
|
|
|
# --description--
|
|
|
|
Given a 3D array representing availability windows for multiple people, return the earliest time where everyone has one hour free. If no such time exists, return `"None"`.
|
|
|
|
- Each person's availability is an array of `[start, end]` integer pairs in 24-hour time. For example, `[10, 12]` would mean the person is available from 10 to 12. Start times range from 0-23, and end times range from 1-24.
|
|
|
|
For example, given:
|
|
|
|
```json
|
|
[
|
|
[[10, 12], [15, 16]], // person 1
|
|
[[11, 14], [15, 16]] // person 2
|
|
]
|
|
```
|
|
|
|
Return `11`, the start of their first shared free hour.
|
|
|
|
# --hints--
|
|
|
|
`getMeetingTime([[[10, 12], [15, 16]], [[11, 14], [15, 16]]])` should return `11`.
|
|
|
|
```js
|
|
assert.equal(getMeetingTime([[[10, 12], [15, 16]], [[11, 14], [15, 16]]]), 11);
|
|
```
|
|
|
|
`getMeetingTime([[[9, 10], [12, 15]], [[10, 11], [13, 14]], [[9, 11], [10, 14]]])` should return `13`.
|
|
|
|
```js
|
|
assert.equal(getMeetingTime([[[9, 10], [12, 15]], [[10, 11], [13, 14]], [[9, 11], [10, 14]]]), 13);
|
|
```
|
|
|
|
`getMeetingTime([[[7, 8], [9, 11], [12, 14], [15, 16]], [[8, 11], [12, 13], [14, 15]]])` should return `9`.
|
|
|
|
```js
|
|
assert.equal(getMeetingTime([[[7, 8], [9, 11], [12, 14], [15, 16]], [[8, 11], [12, 13], [14, 15]]]), 9);
|
|
```
|
|
|
|
`getMeetingTime([[[7, 8], [10, 12], [13, 15]], [[8, 11], [12, 13], [14, 15]], [[6, 7], [8, 9], [12, 13]]])` should return `None`.
|
|
|
|
```js
|
|
assert.equal(getMeetingTime([[[7, 8], [10, 12], [13, 15]], [[8, 11], [12, 13], [14, 15]], [[6, 7], [8, 9], [12, 13]]]), "None");
|
|
```
|
|
|
|
`getMeetingTime([[[1, 3], [4, 6], [8, 10], [20, 23]], [[15, 16], [17, 18], [19, 22], [23, 24]], [[14, 16], [17, 23]], [[2, 4], [5, 6], [18, 19], [21, 22], [23, 24]]])` should return `21`.
|
|
|
|
```js
|
|
assert.equal(getMeetingTime([[[1, 3], [4, 6], [8, 10], [20, 23]], [[15, 16], [17, 18], [19, 22], [23, 24]], [[14, 16], [17, 23]], [[2, 4], [5, 6], [18, 19], [21, 22], [23, 24]]]), 21);
|
|
```
|
|
|
|
# --seed--
|
|
|
|
## --seed-contents--
|
|
|
|
```js
|
|
function getMeetingTime(availability) {
|
|
|
|
return availability;
|
|
}
|
|
```
|
|
|
|
# --solutions--
|
|
|
|
```js
|
|
function getMeetingTime(availability) {
|
|
for (let hour = 0; hour < 24; hour++) {
|
|
const allFree = availability.every(person =>
|
|
person.some(([start, end]) => start <= hour && hour + 1 <= end)
|
|
);
|
|
if (allFree) return hour;
|
|
}
|
|
return "None";
|
|
}
|
|
```
|