2019年3月3日 星期日

[leetcode][python][c] 15. 3Sum

這題主要有兩個需要注意的部分:

  1. 降低尋找所有組合的複雜度
    1. 暴力法: (n-2)*(n-2)*(n-2) = O(n^3)
    2. 我的作法: O(n^2)
  2. 避免重複的答案(因為輸入的測試資料可能包含重複的數字

我的作法是:
  1. 將測試資料排序 O(nlogn) <==使用程式語言內建排序
  2. i/l/r 代表選定的三個資料的index
    1. i: 從index 0 到 總資料數-2 <==(n-2) *(n-1)! = O(n^2)
      1. l: 的下一筆
      2. r: 最後一筆 
  3. 處理重複資料的部分,則是在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







沒有留言:

張貼留言