給定一個N個整數的數組,對數組進行排序,然後在排序後的數組中找到兩個連續的數字,其中最大的差值。 示例 - 對輸入[1,7,3,2]輸出4(排序數組爲[1,2,3,7],最大差值爲7-3 = 4)。算法A在O(NlogN)時間內運行。在O(n)中運行的數組「最大差異」算法?
我需要找到一個功能與算法A相同的算法,它運行在O(N)時間。
UPDATE:
解決方案: http://cgm.cs.mcgill.ca/~godfried/teaching/dm-reading-assignments/Maximum-Gap-Problem.pdf
到目前爲止,您探索了哪些路徑? – 2012-04-21 20:59:46
你只需要返回最大差異,對吧?你不必返回排序的數組呢? – 2012-04-21 21:02:17
計數和基數排序可能會給你O(n)。從那裏你可以很容易地使用O(n)算法找出最大差異。 O(n)+ O(n)= O(n)。 – 2012-04-21 21:06:41