在KSum問題中,例如在3Sum問題中,有一種方法是首先對數組進行排序,然後選擇第一個數字。接下來是爲陣列的其餘部分做2Sum,從而產生O(N^2)的總運行時間。我覺得很難理解。由於我們必須做2Sum大約N-2次,總運行時間仍然應該是O(N^3)。請賜教。KSum如何最小運行時間爲O(N^k-1)?
-1
A
回答
1
假設T(N,K)表示來計算Ksum問題爲排序陣列大小爲n的所需的時間複雜度。基的情況下是
T(n, 1) = n
T(n, 2) = n
現在每隔ķ我們就必須循環一次通過陣列,並檢查第k-1之和可能從其它元素以便
T(n, 3) = n*T(n, 2)
T(n, 4) = n*T(n, 3)
....
T(n, k) = n*T(n, k-1)
所以對於k > 2的時間複雜度將是
爲O(n ^(K-1))
+0
謝謝!我知道了。 –
+0
@ J.Tang如果答案已解決您的問題,請將其標記爲已接受。 – meowgoesthedog
相關問題
- 1. 爲什麼CompareToAll最快的運行時間是O(1)?
- 2. 如何最小化並行計算的運行時間?
- 3. optmise此代碼最小運行時間
- 4. O(n)的運行時間算法
- 5. 分析運行時間,大O
- 6. 計算大O運行時間
- 7. 最壞的情況下運行時間(大O)
- 8. 最壞情況下運行時間大O
- 9. haskell長度運行時間O(1)或O(n)
- 10. 最佳運行時間
- 11. 如何找到最小和最大時間差爲表中的行
- 12. 如何以x時間(分鐘和小時)運行任務
- 13. 從小於O(log(n))運行時間的排序數組中搜索
- 14. 如何最小化C++編譯時間
- 15. 最小生成樹的運行時間? (Prim方法)
- 16. 運行時間爲12:00
- 17. 查找陣列分區最大(左)<最小(右) - 可能在O(N)時間?
- 18. 如何在運行時發現最大堆大小
- 19. 如何在運行時獲取最小sdk版本(minSdkVersion)?
- 20. 如何最小化嵌入式系統的Python 3.6運行時?
- 21. 旅行時間最小化算法
- 22. 如何從O(n)運行時間的答案中刪除重複項?
- 23. 減少會話大小運行時間
- 24. 如何在Android中運行* .o文件
- 25. 最壞情況下運行時間爲O,Ω爲最佳情況,但爲什麼有時在最壞情況下使用Ω?
- 26. 如何優化SQL查詢來實現最小執行時間
- 27. 如何最小化Java程序的執行時間?
- 28. 嵌套循環的運行時間估計/大O表示
- 29. 證明修改後快速排序的運行時間= O(Nk)
- 30. 使用NSpredicate過濾NSArray的Big-O運行時間
那麼,你做2-總和較小的芳射線每次選擇另一個數字並且2-sum被優化,因爲它已經被排序,所以它比O(n)小一些。 – apokryfos
在5總和的問題,根據你的方法你選擇一個數字,然後執行4sum,這將選擇一個數字,並執行3sum,等等 – marvel308
@apokryfos我看到。我對2Sun很困惑,這就是爲什麼。謝謝! –