• LeetCode: Permutations


    一次过

     1 class Solution {
     2 public:
     3     void dfs(int dep, int maxdep, vector<int> &tmp, vector<vector<int>> &ret, vector<int> num, vector<bool> &visit) {
     4         if (dep == maxdep) {
     5             ret.push_back(tmp);
     6             return;
     7         }
     8         for (int i = 0; i < maxdep; i++) {
     9             if (!visit[i]) {
    10                 visit[i] = true;
    11                 tmp.push_back(num[i]);
    12                 dfs(dep+1, maxdep, tmp, ret, num, visit);
    13                 tmp.pop_back();
    14                 visit[i] = false;
    15             }
    16         }
    17     }
    18     vector<vector<int> > permute(vector<int> &num) {
    19         // Start typing your C/C++ solution below
    20         // DO NOT write int main() function
    21         sort(num.begin(), num.end());
    22         int size = num.size();
    23         vector<int> tmp;
    24         vector<vector<int>> ret;
    25         vector<bool> visit(size, false);
    26         dfs(0, size, tmp, ret, num, visit);
    27         return ret;
    28     }
    29 };

     推荐下一段代码

     1 class Solution {
     2 public:
     3     void dfs(vector<int> &num, vector<vector<int> > &ans, int k) {
     4         if (k == num.size()) {
     5             ans.push_back(num);
     6             return;
     7         }
     8         for (int i = k; i < num.size(); ++i) {
     9             swap(num[i], num[k]);
    10             dfs(num, ans, k+1);
    11             swap(num[i], num[k]);
    12         }
    13     }
    14     vector<vector<int> > permute(vector<int> &num) {
    15         vector<vector<int> > ans;
    16         if (num.size() == 0) return ans;
    17         sort(num.begin(), num.end());
    18         dfs(num, ans, 0);
    19         return ans;
    20     }
    21 };

     C#

     1 public class Solution {
     2     public List<List<int>> Permute(int[] nums) {
     3         List<List<int>> ans = new List<List<int>>();
     4         if (nums.Length == 0) return ans;
     5         Array.Sort(nums);
     6         dfs(nums, ref ans, 0);
     7         return ans;
     8     }
     9     public void dfs(int[] nums, ref List<List<int>> ans, int k) {
    10         if (k == nums.Length) {
    11             ans.Add(new List<int>(nums));
    12             return;
    13         }
    14         for (int i = k; i < nums.Length; i++) {
    15             int tmp = nums[i];
    16             nums[i] = nums[k];
    17             nums[k] = tmp;
    18             dfs(nums, ref ans, k+1);
    19             tmp = nums[i];
    20             nums[i] = nums[k];
    21             nums[k] = tmp;
    22         }
    23     }
    24 }
    View Code
  • 相关阅读:
    Postmanapi接口自动化局限性
    爱加密加固产品原理分析_定制版
    白话文理解DCT离散余弦变换
    mysql like使用预编译
    【Jenkins】jenkins控制台/生成的日志文件 中文乱码
    【Python】连接Linux并执行命令
    【Java】时间转换(可用于计算耗时场景)
    【Java】List去重 / 删除ArrayList中重复元素,保持顺序 / 提取两个list中不同的元素
    【Java】读取文本文件
    【Python】文件转码/编码/解码/utf8
  • 原文地址:https://www.cnblogs.com/yingzhongwen/p/3030399.html
Copyright © 2020-2023  润新知