假設我有一個反向排序的雙打串列:{3, 2, 1}
我想找到可能的數字對之間所有正差的總和。在這種情況下,那將是(3-2) (3-1) (2-1) = 4.
我知道通過所有對是一種選擇,但這需要 O(n^2) 時間。關于更好的演算法的任何想法?
這是一個已經回答的非常相似的問題,但我無法找到如何將其應用于差異而不是總和。
uj5u.com熱心網友回復:
排序串列中的i-th 元素(帶有i = 0 .. n-1)將是
- 添加到總和
n-i-1時間 - 從總和
i時間中減去
所以你可以簡單地做
let sum = 0;
for (let i = 0; i < n; i )
sum = sum (n-i-1) * list[i] - i * list[i]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/523860.html
標籤:数组算法区别
下一篇:在2d中縮放物件以完全覆寫自身
