我有這樣的資料:
| 時間(從開始的秒數) | 價值 |
|---|---|
| 15 | 2 |
| 16 | 4 |
| 19 | 2 |
| 25 | 9 |
有很多條目(10000 ),我需要一種方法來找到任何時間范圍的足夠快的總和,比如 16-25 秒范圍的總和(即 4 2 9=15)。此資料將多次動態更改(始終在串列底部添加新條目)。
我正在考慮使用排序串列 二進制搜索來確定位置并計算值的總和,但是計算它可能需要太多時間。有沒有更合適的方法呢?Nuget 資料包或演算法參考將不勝感激。
uj5u.com熱心網友回復:
只需計算累積總和:
Time Value CumulativeSum
15 2 2
16 4 6
19 2 8
25 9 17
然后對于范圍 [16,25],它將是對16和25的左邊界進行二分搜索的任務,即 17 - 2 = 15
復雜度:O(log(n)),其中n - 串列的大小。
可以在我的倉庫中找到下限/上限的二進制搜索實作 - https://github.com/eocron/Algorithm/blob/master/Algorithm/Sorted/BinarySearchExtensions.cs
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/424330.html
