回溯法(Backtracking),為經過優化的暴力法,透過制定上下界找到答案,採用試錯的方式將所有可能性列出,只要無法得到有效的結果就不再循著該路徑往下運算,退回前面重新計算,重複嘗試直到可以找到答案前進或是發現該問題沒有答案。
範例說明 :
題目 : 給定一個整數數組 nums = [1, 2, 3],請找出所有可能排列。
Step 1 :使用一個空的列表來儲存當前的排列
Step 2 : 使用一個集合來儲存已經使用過的元素
Step 3 :
Step 4 : 得到的答案為 [ [1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1] ]
優點 :
缺點 :