zoukankan      html  css  js  c++  java
  • LeetCode 46. 全排列(Permutations)

    题目描述

    给定一个没有重复数字的序列,返回其所有可能的全排列。

    示例:

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

    解题思路

    回溯法,从第一个数开始,依次与此位置向后的每一个位置交换得到新序列,然后递归向后重复此动作,在得到某位置开头的所有序列后要把交换后的序列复原。

    代码

     1 class Solution {
     2 public:
     3     vector<vector<int>> permute(vector<int>& nums) {
     4         vector<vector<int>> res;
     5         pmt(nums, 0, res);
     6         return res;
     7     }
     8     void pmt(vector<int> &seq, int idx, vector<vector<int>> &res){
     9         if(idx == seq.size() - 1)
    10             res.push_back(seq);
    11         else{
    12             for(int i = idx; i < seq.size(); i++){
    13                 swap(seq[idx], seq[i]);
    14                 pmt(seq, idx + 1, res);
    15                 swap(seq[i], seq[idx]);
    16             }
    17         }
    18     }
    19 };
  • 相关阅读:
    机器学习的定义和分类
    选股
    mysql修改密码
    快速排序
    php的错误类型
    MySQL数据库优化
    库存超卖问题
    循环处理
    kafka安装配置
    JavaScript、jQuery杂记
  • 原文地址:https://www.cnblogs.com/wmx24/p/9396146.html
Copyright © 2011-2022 走看看