我知道一個O(N 2)SOLN,可以將它以更好的方式來完成,如無元件的極限子陣列的在陣列是巨大的是< = 100,000數比之和小於或等於給定的數k
0
A
回答
4
是的,如果所有元素都是非負的,則存在O(n lgn)算法。
- 定義
p[i]
是p[0..i]
總和(我們稱之爲前綴和) - 對於每個
i
:二進制搜索最大j
這樣p[j] - p[i-1] <= k
,添加j-i+1
櫃檯
總的複雜性是O(n) + O(n lgn) = O(n lgn)
爲什麼它的工作原理是,因爲對於每個i
,我們試圖找到最大範圍星從i
這樣,這個範圍的總和是< = k。
讓這個範圍是[i..j]
,因爲所有元件都是非負的,所以[i..i], [i..i+1], [i..i+2] ... [i..j]
都是子陣列,其總和是< = k時,有它們的總j-i+1
。
我們發現這種範圍對於每個i
,並不斷增加子陣列從i
其中總和< = K
+0
我懷疑有可能使用兩個三分球爲O(n)做雖然類似的事情一些技巧... – shole
相關問題
- 1. 計數總和大於或等於k的子集的數量
- 2. 對於二項函數nCr = k,給定r和k找到n
- 3. 保持了比給定值等於或大於
- 4. 將n個數字分成兩組,每組的總和小於等於k
- 5. 從數組中計算等於或大於給定數字的數字
- 6. 如何檢查給定值大於或等於mysql數據庫?
- 7. 如何動態切換比較小於,大於或等於?
- 8. 編寫一個程序來查找正奇數和小於或等於30的正偶數的乘積之和
- 9. 程序檢查整數是否大於,小於或等於
- 10. MbUnit的Assert.AreEqual DateTime和小數不等於
- 11. 基於'select'是否大於或小於給定值的JQuery更改函數
- 12. 否定小於,大於等
- 13. 給定一個偶數(大於2),返回總和等於給定數的兩個素數
- 14. 小於或等於符號的R表達式函數
- 15. XPath是否小於或等於百分比?
- 16. 比較日期時間小於或等於不工作
- 17. 小於或等於的Oracle SQL
- 18. 的Crystal Reports大於或等於參數
- 19. 正則表達式找到比等號小於和大於之間文本
- 20. 找到小於給定數字的斐波那契和小於O(n)
- 21. SQL使用「小於或等於」和「不大於」
- 22. 我要取總產品那些數量小於或等於零
- 23. PHP/MYSQL:小於或等於50是顯示數百條記錄?
- 24. 查找最大總數連續子數組,使得子數組的長度小於等於k?
- 25. Brainfuck比較2個數字大於或小於
- 26. 小於或等於不工作
- 27. 小於或等於條件Android
- 28. linq join小於或等於int值
- 29. STL排序向量找到第一個元素小於或等於給定值
- 30. 生成等於計數的最小值和最大值之間的數字
保證是非負的數組中的元素開始的數量? – templatetypedef
是的元素是非負的! – user3111412