Есть два ступенчатых графика наблюдаемых величин. Каждый задан списком
измерений (момент, значение), отсортированным по моменту по строгому
возрастанию. Величина сохраняет значение до следующего измерения, до первого
измерения она равна нулю. Постройте график суммы двух величин.
type Sample struct {
At int // момент измерения
Level int // значение с этого момента
}
// CombineSeries возвращает ступенчатый график a + b.
func CombineSeries(a, b []Sample) []Sample
Точка результата ставится в каждый момент, где есть измерение хотя бы в
одном из графиков (даже если сумма не изменилась). Моменты в результате строго
возрастают.
Примеры
a=[{11,4},{15,2}]
b=[{12,8},{13,12},{19,14}]
→ [{11,4},{12,12},{13,16},{15,14},{19,16}]
a=[{1,5}], b=[{1,-5}] → [{1,0}]
a=[], b=[{3,7}] → [{3,7}]
Ограничения
0 ≤ len(a), len(b) ≤ 10⁶, значения по модулю ≤ 10⁹.
- Входные слайсы не изменять. Ожидается O(len(a) + len(b)).