Find motion intervals above threshold
VerkadaSoftware Engineer · Technical ScreenLast updated
This question evaluates understanding of time-series data processing and interval detection, focusing on grouping timestamped motion readings that exceed a numeric threshold and managing contiguous active segments.
You are processing data from a single security camera.
You are given:
- A threshold value
T(a real number). - A vector (array) of time-stamped motion readings. Each reading is a pair
[time, motion_level], where: timeis a strictly increasing integer timestamp (in seconds),motion_levelis a real number.
Whenever motion_level > T, we consider the camera to be "active". Consecutive active readings form a continuous active interval from the time of the first active reading to the time of the last active reading in that group.
Assume:
- The input vector is sorted by
timein strictly increasing order. - If two active readings are adjacent in the array (with no inactive reading between them), they belong to the same active interval, even if there is a time gap between their timestamps.
- If a reading is inactive (
motion_level <= T), it does not belong to any active interval.
Return a list of active time intervals [start_time, end_time] covering all maximal contiguous segments of readings where motion_level > T.
Example:
-
Input:
-
readings = [[1, 0.4], [5, 0.2], [11, 0.9], [15, 0.9], [17, 0.8], [25, 0.5], [27, 0.8], [36, 0.9]] -
T = 0.8 -
Output:
-
[[11, 17], [27, 36]]
Explanation:
- Readings at times 11, 15, 17 have
motion_level > 0.8, so they form one interval[11, 17]. - Readings at times 27 and 36 have
motion_level > 0.8, forming interval[27, 36]. - All other readings have
motion_level <= 0.8and are ignored.
Implement a function that takes the readings and threshold and returns the list of such intervals.
Solution walkthrough is for members
Get the full walkthrough with reference code and complexity analysis, plus Kitty Coach at 300 messages a day. Hints, the code runner and community answers stay free.