如求並集[1,2],[4,5],[5,9],結果是[1,2],[4,9]
求所有的交集為
但是求相交部分為[1,2],[5,5],
三個型別,對應下面三個小函式
type timeinterval structtype timeslice timeinterval
// 求全域性的並集
func (ts timeslice) union()timeslice
sort.slicestable(ts, func(i, j int) bool )
res := timeslice
for key, val := range ts
if val.start >= res[len(res)-1].start && val.start < res[len(res)-1].end
}else
} return res
}// 求全域性的交集
func (ts timeslice)intersect()timeslice
sort.slicestable(ts, func(i, j int) bool )
res := timeslice
for key, val := range ts
if val.start >= res[0].start && val.start <= res[0].end
}else
} return res
}// 求部分的交集
func (ts timeslice)intersectsome()timeslice
sort.slicestable(ts, func(i, j int) bool )
res := timeslice
for key, val := range ts
if val.start >= res[len(res)-1].start && val.start <= res[len(res)-1].end
}else
} return res
}func runmergeinterval(), timeinterval, timeinterval,timeinterval,timeinterval}
case2:= timeslice, timeinterval, timeinterval,timeinterval,timeinterval}
case3:= timeslice, timeinterval, timeinterval,timeinterval,timeinterval}
// res = [[1 100] [101 102]]
re := case1.union()
fmt.println(re)
fmt.println(case1.intersect(), case2.intersect(), case1.intersectsome(), case3.intersectsome())
//[ ]
// [ ]
}
Go 時間交並集小工具
示例 含測試 在這裡 在甘特圖的場景下,我們經常會遇到這種情況,五位員工a,b,c,d,e,可能他們的工作都是並行的,我們需要計算 某段時間內他們總的工作時長。我們不能簡單得把五個人的工作時間都加起來,因為當中會有重疊的部分。所以這時候我們就需要乙個計算時間交並集的工具。將一組離散的時間段按照開始時...
寫個 Go 時間交並集小工具
示例 含測試 在這裡在甘特圖的場景下,我們經常會遇到這種情況,五位員工a,b,c,d,e,可能他們的工作都是並行的,我們需要計算 某段時間內他們總的工作時長。我們不能簡單得把五個人的工作時間都加起來,因為當中會有重疊的部分。所以這時候我們就需要乙個計算時間交並集的工具。將一組離散的時間段按照開始時間...
VC下的小工具
vc6.0附帶工具軟體 1 activex control test container稱為 activex 控制項測試容器 顧名思義,此工具的主要功能就是測試activex 控制項,可以通過改變activex 控制項的屬性觀察控制項的變化,也可以通過呼叫activex 控制項的方法觀察控制項的返回...