假設我有一個未經排序的串列,如下面的串列:
并且我想回傳最小元素的數量(在這種情況下,min = 1),也就是4。
一個快速的解決方案是使用一些內置的 但是我想知道是否有可能在嚴格的 uj5u.com熱心網友回復: 請記住,big-O符號談論的是一個運行時間的擴展方式,而不是絕對的運行時間。在這個意義上,一個在陣列上進行兩次傳遞的演算法,每次花費的時間都是O(n),它的運行時間也是O(n)--運行時間將隨著輸入大小的增加而線性擴展。因此,你的兩遍演算法將作業得很好。
一個更強烈的要求是你有一個單通道演算法,在這個演算法中,你可以一次性看到所有的元素。在這種情況下,你可以通過跟蹤到目前為止你所看到的最小的數字以及你所看到的所有位置來實作這一目標。每當你看到一個數值時, 這也需要花費 O(n) 的時間,但只需一次就能完成。
標籤: 上一篇:為什么我收到以下錯誤?"放置S3策略錯誤。MalformedPolicy。政策有無效的行動"
下一篇:如何使用HASHMAP發送資料
[1.2.3.1.5.1]。
[1, 2, 3, 1, 1, 5, 2, 1] 。
min()函式找到最小值,然后再次迭代串列并比較數值,然后將它們數出來。O(2n)時間。O(n)時間內做到這一點--只在串列中進行一次傳遞。有什么方法可以做到嗎?
