回溯演算法
需要解決三個問題:
路徑:也就是已經做出的選擇。
選擇列表:也就是你當前可以做的選擇。
結束條件:也就是到達決策樹底層,無法再做選擇的條件。
其中最關鍵的點就是:在遞迴之前做選擇,在遞迴之後撤銷選擇
class solution
// for(選擇:選擇列表)
// }
public listlettercombinations(string digits)
listvisited = new linkedlist<>();
lettermap.put('2',"abc");
lettermap.put('3',"def");
lettermap.put('4',"ghi");
lettermap.put('5',"jkl");
lettermap.put('6',"mno");
lettermap.put('7',"pqrs");
lettermap.put('8',"tuv");
lettermap.put('9',"wxyz");
int index = 0;//數字字串的第0個位置
backtrack(visited, digits, index);
return result;
}//路徑,選擇列表
private void backtrack(listvisited, string digits, int index)
// for(選擇:選擇列表)
// 觸發結束條件(已經訪問過了最後乙個數字)
if (index == digits.length())
result.add(str);
return;
}// int index = 0;//設定區域性變數在遞迴過程中沒有作用
char currnum = digits.charat(index);
string currletters = lettermap.get(currnum);
for (int i = 0; i < currletters.length(); i++)
}}
回溯 leetcode 電話號碼的字母組合
給定乙個僅包含數字 2 9 的字串,返回所有它能表示的字母組合。答案可以按 任意順序 返回。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。輸入 digits 23 輸出 ad ae af bd be bf cd ce cf 17.號碼的字母組合 定義乙個path記錄每次迴圈放入的...
5 電話號碼的字母組合(中等 回溯)
給定乙個僅包含數字 2 9 的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 說明 儘管上面的答案是按字典序排列的,但是你可以任意選擇答案輸出的順序。回溯法class s...
電話號碼的字母組合
給乙個數字字串,每個數字代表乙個字母,請返回其所有可能的字母組合。下圖的手機按鍵圖,就表示了每個數字可以代表的字母。樣例給定 23 返回 ad ae af bd be bf cd ce cf 注意以上的答案是按照詞典編撰順序進行輸出的,不過,在做本題時,你也可以任意選擇你喜歡的輸出順序。class ...