当前位置:   article > 正文

(leetcode学习)46. 全排列

(leetcode学习)46. 全排列

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

示例 1:

输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

示例 2:

输入:nums = [0,1]
输出:[[0,1],[1,0]]

示例 3:

输入:nums = [1]
输出:[[1]]

提示:

  • 1 <= nums.length <= 6
  • -10 <= nums[i] <= 10
  • nums 中的所有整数 互不相同

dfs就完事了,慢是慢了点

最多就6个数排列,可以考虑打表

  1. class Solution {
  2. public:
  3. vector<vector<int>> res;
  4. void dfs(vector<int>& nums, int cur_n, vector<int>& cur_res){
  5. if(cur_n == nums.size()){
  6. vector<int> temp(cur_res);
  7. res.push_back(temp);
  8. return ;
  9. }
  10. int k = cur_res.size();
  11. for(int i = 0; i<=k; i++){
  12. cur_res.insert(i + cur_res.begin(), nums[cur_n]);
  13. dfs(nums, cur_n+1, cur_res);
  14. cur_res.erase(i + cur_res.begin());
  15. }
  16. }
  17. vector<vector<int>> permute(vector<int>& nums) {
  18. vector<int> temp;
  19. temp.push_back(nums[0]);
  20. dfs(nums, 1, temp);
  21. return res;
  22. }
  23. };

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号