You are given two coding tasks.
Task 1: Time-versioned key-value store
Design an in-memory data structure that supports:
-
set(key, value, timestamp)
: store the string
value
for string
key
at integer
timestamp
.
-
get(key, timestamp) -> value
: return the value associated with
key
at the largest stored timestamp
t
such that
t <= timestamp
. If there is no such timestamp (or
key
was never set), return an empty string.
Notes / assumptions
-
Multiple
set
operations may occur for the same
key
at different timestamps.
-
Timestamps are integers; you may assume
set
calls for a given key arrive in non-decreasing timestamp order unless stated otherwise.
Task 2: Find time slots when everyone is available
You are given schedules for N people. Each person’s schedule is a list of busy time intervals during the day.
-
Each busy interval is
[start, end)
with
start < end
.
-
For each person, their busy intervals are non-overlapping and sorted by start time.
Return all time intervals (also as [start, end)) when everyone is available (i.e., when no one is busy). Only include intervals with positive length.
Clarify in your solution
-
What overall day bounds apply (e.g.,
[0, 24*60)
minutes) and how to handle availability outside provided busy intervals.
Input / Output format (for Task 2)
-
Input:
schedules: List[List[Interval]]
, where
schedules[i]
is person
i
’s busy intervals.
-
Output:
List[Interval]
representing common free time intervals.