回溯問題,就是決策樹的遍歷過程,回溯問題需要有下面幾個問題考慮
明白回溯問題的幾個問題後,我們來看,回溯的基本框架
listresult = new arraylist();
public void backtrack(已經選擇的路徑,可以做選擇的列表)
}
光學不練假把式,在看到思路前,先自己寫一遍實現,再看有沒有可以優化的地方.
示例:
//輸入: [1,2,3]
//輸出:
[ [1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
class solution
private void backtrack(list> res, int nums, arraylisttmp, int visited)
for (int i = 0; i < nums.length; i++)
}}
注: 其中res
是全域性返回,tmp是當前路徑上的節點,visited
和nums
來標識當前還有哪些節點可以訪問
有效的 ip 位址 正好由四個整數(每個整數字於 0 到 255 之間組成,且不能含有前導 0),整數之間用 '.' 分隔。
例如:"0.1.2.201" 和 "192.168.1.1" 是 有效的 ip 位址,但是 "0.011.255.245"、"192.168.1.312" 和 "[email protected]" 是 無效的 ip 位址。
示例 1:
輸入:s = "25525511135"
輸出:["255.255.11.135","255.255.111.35"]
示例 2:
輸入:s = "0000"
輸出:["0.0.0.0"]
示例 3:
輸入:s = "1111"
輸出:["1.1.1.1"]
示例 4:
輸入:s = "010010"
輸出:["0.10.0.10","0.100.1.0"]
示例 5:
輸入:s = "101023"
輸出:["1.0.10.23","1.0.102.3","10.1.0.23","10.10.2.3","101.0.2.3"]
解決**
class solution
void helper(listres,listtemp,string next)
if(temp.size() == 4 && next.length() == 0)
for(int i = 0; i < next.length(); i++)
if(s.length() > 3)
if(s.length() == 3 && "255".compareto(s) < 0)
temp.add(s);
helper(res,temp,next.substring(i+1));
temp.remove(temp.size() - 1);}}
}
演算法 回溯問題解決框架
回溯問題,就是決策樹的遍歷過程,回溯問題需要有下面幾個問題考慮 明白回溯問題的幾個問題後,我們來看,回溯的基本框架 listresult new arraylist public void backtrack 已經選擇的路徑,可以做選擇的列表 光學不練假把式,在看到思路前,先自己寫一遍實現,再看有沒...
oom問題解決
dalvik虛擬機會為應用程式分配固定大小的heap 如果使用超過了這個heap的大小,且沒有可被 物件,就會報oom。多張較大會迅速占用空間造成oom。我們可以使用一下的方法來減少這種情況的產生 1.減少單張的大小,根據螢幕大小來對bitmap做resize。private void setima...
too many open files問題解決辦法
今天用 往liunx中寫檔案,檔案很多 執行一會就日誌上就報錯 too many open files 結果找了半天才解決這個問題,現在給大家分享一下。首先用 ulimit a 命令看看linux的open files值是多少,結果乙隻有1024,不夠用的。然後修改linux的配置檔案,修改 etc...