46. 全排列

循环每次都从0开始
从0开始遍历used,来确定当前元素是否使用过
image.png

  1. class Solution {
  2. public:
  3. void backtracking(vector<int>& nums,vector<bool> used)
  4. {
  5. if(path.size()==nums.size())
  6. result.push_back(path);
  7. for(int i=0;i<nums.size();i++)
  8. {
  9. //每次从头遍历used,重复的跳过
  10. if(used[i]==true)continue;
  11. used[i] = true;
  12. path.push_back(nums[i]);
  13. backtracking(nums,used);
  14. path.pop_back();
  15. used[i] = false;
  16. }
  17. }
  18. vector<vector<int>> permute(vector<int>& nums) {
  19. vector<bool> used(nums.size(),false);
  20. backtracking(nums,used);
  21. return result;
  22. }
  23. vector<int> path;
  24. vector<vector<int>> result;