假設你有整數的任意列表,並返回True
如果在總計爲0替代的解決方案
我的列表中存在一對能夠產生n * log(n)複雜度的解決方案。這裏有一個簡短的草圖(雖然有一個更簡單的方法,見下文):
- 排序數組。設置一個指向第一個元素的指針。
- 調查指針的元素(首先調用它)和元素在數組的對面(最後調用它)。如果第一個元素的大小大於最後一個元素的大小,請刪除第一個元素並將指針移至最後一個元素。否則開始遍歷數組向後尋找(可能的)總和。
- 如果沒有找到的總和,將指針指向下一個元素,並重復2
上面的解釋並不重要。 顯然還有另一種使用字典的解決方案。有人可以啓發我嗎?
不回答你的問題,但N *日誌的一個簡化版本(n)的算法是:1排序數組絕對值; 2.遍歷數組,檢查'a [i] == -a [i + 1]' – 2013-03-13 15:11:15