zoukankan      html  css  js  c++  java
  • leetcode 46. Permutations

    Given a collection of distinct integers, return all possible permutations.

    Example:

    Input: [1,2,3]
    Output:
    [
      [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         sort(nums.begin(), nums.end());
     5         int len = nums.size();
     6         vector<bool> visited(len, false);
     7         vector<vector<int> > res;
     8         vector<int> tmp;
     9         dfs(0, len, nums, tmp, res, visited);
    10         return res;
    11     }
    12 private:
    13     void dfs(int start, int len, vector<int> &nums, vector<int> &v, vector<vector<int> > &res, vector<bool> &visited) {
    14         if (start == len) {
    15             res.push_back(v);
    16             return ;
    17         }
    18         for (int i = 0; i < len; i++) {
    19             if (visited[i] == false) {
    20                 visited[i] = true;
    21                 v.push_back(nums[i]);
    22                 dfs(start + 1, len, nums, v, res, visited);
    23                 v.pop_back();
    24                 visited[i] = false;
    25             }
    26         }
    27     }
    28 };

    思路二:

     1 class Solution {
     2 public:
     3     vector<vector<int>> permute(vector<int>& nums) {
     4         sort(nums.begin(), nums.end());
     5         int len = nums.size();
     6         vector<vector<int> > res;
     7         dfs(0, len, nums, res);
     8         return res;
     9     }
    10 private:
    11     void dfs(int start, int len, vector<int> &nums, vector<vector<int> > &res) {
    12         if (start == len) {
    13             res.push_back(nums);
    14             return ;
    15         }
    16         for (int i = start; i < len; i++) {
    17             swap(nums[start], nums[i]);
    18             dfs(start + 1, len, nums, res);
    19             swap(nums[start], nums[i]);
    20         }
    21     }
    22 };
  • 相关阅读:
    [CentOS]Centos设置网卡
    [C#]创建Windows用户及组
    [C#]读取指定路径的配置文件[转]
    [C#]安装WindowsService的关键步骤
    [C#]如何解决修改注册表受限问题(转)
    [C#]DES再一例(转)
    [C#]获取当前程序运行路径的方法集合(转)
    [Postgres]Postgres复制表
    [Postgres]postgresql.conf : Permission denied处理一法
    【转】/proc/sysrq-trigger 详解
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/11543389.html
Copyright © 2011-2022 走看看