Correction on merge. Added Get. Added example.

This commit is contained in:
Daniel Gil
2018-05-29 10:10:33 +02:00
parent 01cb3ccd23
commit 6fdaa341ff
7 changed files with 259 additions and 8 deletions

View File

@@ -10,9 +10,12 @@ func (intvls *intervals) Merge() []*Interval {
func (intvls *intervals) calculateMerged() []*Interval {
intvls.Sort()
list := []*Interval{}
if len(intvls.Intervals) == 0 {
return list
}
var lastLow int
var lastHigh int
pendingToAdd := false
for i, intvl := range intvls.Intervals {
if i == 0 {
lastLow = intvl.Low
@@ -26,16 +29,12 @@ func (intvls *intervals) calculateMerged() []*Interval {
if intvl.High > lastHigh {
lastHigh = intvl.High
}
pendingToAdd = true
continue
}
list = append(list, &Interval{Low: lastLow, High: lastHigh})
lastLow = intvl.Low
lastHigh = intvl.High
pendingToAdd = false
}
if pendingToAdd == true {
list = append(list, &Interval{Low: lastLow, High: lastHigh})
}
list = append(list, &Interval{Low: lastLow, High: lastHigh})
return list
}