AlgoPrecision

Greedy

Local Choice Visualizer

Watch greedy strategies sort, scan, select, merge, and reset state while each step updates the current result and complexity.

O(n log n) time / O(1) space
result: -selected: 0
A1default

[1, 3]

start 1 / end 3

A2default

[2, 5]

start 2 / end 5

A3default

[4, 7]

start 4 / end 7

A4default

[6, 9]

start 6 / end 9

A5default

[8, 10]

start 8 / end 10

Result

-

Time

O(n log n)

Space

O(1)

Step Note

Sort activities by earliest finish time.

Details
function activitySelection(activities: Activity[]) {
  activities.sort((a, b) => a.end - b.end)
  const selected = []
  let lastEnd = -Infinity
  for (const activity of activities) {
    if (activity.start >= lastEnd) {
      selected.push(activity)
      lastEnd = activity.end
    }
  }
  return selected
}