- 降低尋找所有組合的複雜度
- 暴力法: (n-2)*(n-2)*(n-2) = O(n^3)
- 我的作法: O(n^2)
- 避免重複的答案(因為輸入的測試資料可能包含重複的數字
我的作法是:
- 將測試資料排序 O(nlogn) <==使用程式語言內建排序
- i/l/r 代表選定的三個資料的index
- i: 從index 0 到 總資料數-2 <==(n-2) *(n-1)! = O(n^2)
- l: 的下一筆
- r: 最後一筆
- 處理重複資料的部分,則是在i/l/r移動時,順便跳過重複的內容,避免產生重複的答案
source code:
https://github.com/cy-arduino/leetcode/blob/master/15.%203Sum.py
https://github.com/cy-arduino/leetcode/blob/master/15.%203Sum.c
沒有留言:
張貼留言