46. 全排列-leetcode刷题(C++)

一、题目

46. 全排列

二、分析

https://mp.weixin.qq.com/s/SCOjeMX1t41wcvJq49GhMw
个人理解了题目的做法,但是自己落实代码还是有点难度,尤其是单层搜索的逻辑。所以参考了上述链接的解析。

for (int i = 0; i < nums.size(); i++) {
    if (used[i] == true) continue; // path里已经收录的元素,直接跳过
    used[i] = true;
    path.push_back(nums[i]);
    backtracking(nums, used);
    path.pop_back();
    used[i] = false;
}

每次找一个树节点的子节点(深入过程),都需要遍历一遍nums数组;找到used为0的元素放入path。
每次回退过程,都要清理used和path。
下面记录自己的傻瓜式解析。。。。
过程和树的深度优先搜索一致。
46. 全排列-leetcode刷题(C++)_第1张图片

你可能感兴趣的:(leetcode)