簡體   English   中英

在 O(log n) 時間復雜度中查找排序數組的總和

[英]Finding sum of a sorted array in O(log n) Time Complexity

有一個排序數組 A[1,..,n],其中數組中的每個元素都在 [0-9] 之間,並且數字可以在條件下重復,即 A[i] <= A[i+1] (小於等於)

有什么方法可以用 O(log n) 時間復雜度來計算嗎?

使用二分搜索查找第一次出現的 0,然后是第一次出現的 1,依此類推,一直到 9。這樣,您將知道數組中0's, 1's, 2's..確切計數.

數組 sum = (1's count*1) + (2's count * 2) ... (9's count * 9)

運行二進制搜索 9 次的總復雜度 = O(logN)

根據推薦的答案,如何知道數組中每個元素的個數? 我的理解是,二分搜索會給你第一次出現該元素,但你仍然需要知道大於或小於該元素的元素來計算出現次數,這樣做你仍然會遍歷整個數組,導致 O( N). 如果我錯了,請糾正我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM