93.复原IP地址
解题思路
代码实现
var restoreIpAddresses = function(s) {
var result =[];
var path =[];
var backtracking= function(s,sIndex){
if(sIndex>= s.length &&path.length===4){
result.push(path.join('.'));
return;
}
for(let i=sIndex;i<=s.length;i++){
var str = s.substring(sIndex,i);
if(str.length>0 && (/^[0-9]+$/.test(str)) && ((str-0 ===0 && str.length===1) ||(str.indexOf('0')!==0 &&(str-0<=255)))){
path.push(str);
backtracking(s,i);
path.pop();
}
}
}
backtracking(s,0);
return result;
};
78.子集
解题思路
代码实现
var subsets = function(nums) {
var result =[[]];
var path =[];
var backtracking = function(nums,sIndex){
if(path.length === nums.length){
return result;
}
for(let i=sIndex;i<nums.length;i++){
path.push(nums[i]);
result.push([...path]);
backtracking(nums,i+1);
path.pop();
}
}
backtracking(nums,0)
return result;
};
90.子集II
解题思路
代码实现
var subsetsWithDup = function(nums) {
var result =[[]];
var path =[];
nums.sort((a, b) => {
return a - b
})
var backtracking = function(nums,sindex){
if(path.length === nums.length){
return;
}
for(let i = sindex; i< nums.length; i++){
if(i > sindex && nums[i] === nums[i - 1]) {
continue
}
path.push(nums[i]);
result.push([...path])
backtracking(nums,i+1);
path.pop();
}
}
backtracking(nums,0);
return result;
};