回溯算法
- 回溯算法是算法设计中的一种思想
- 回溯算法是一种渐进式寻找并构建问题解决方式的策略
- 回溯算法会先从一个可能的动作开始解决问题,如果不行,就回溯到另一个动作,直到将问题解决
leetcode 相关题目
var permute = function (nums) {
const res = [];
const backtrack = (path) => {
if(path.length === nums.length) {
res.push(path);
return;
}
nums.forEach(n => {
if (path.includes(n)) {
return;
}
backtrack(path.concat(n));
})
};
backtrack([]);
return res;
};
var subsets = function (nums) {
const res = [];
const backtrack = (path, length, start) => {
if(path.length === length) {
res.push(path);
return;
}
for (let i = start; i < nums.length; i++) {
backtrack(path.concat(nums[i]), length, i + 1);
}
}
for (let i = 0; i <= nums.length; i++) {
backtrack([], i, 0);
}
return res;
};