zoukankan      html  css  js  c++  java
  • 19.2.7 [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     void build(vector<bool>visited, vector<int>nums, vector<vector<int>>&ans,vector<int>now) {
     4         int flag = false;
     5         int n = nums.size();
     6         for(int i=0;i<n;i++)
     7             if (!visited[i]) {
     8                 visited[i] = true;
     9                 now.push_back(nums[i]);
    10                 build(visited, nums, ans, now);
    11                 visited[i] = false;
    12                 now.pop_back();
    13                 flag = true;
    14             }
    15         if (!flag)ans.push_back(now);
    16     }
    17     vector<vector<int>> permute(vector<int>& nums) {
    18         vector<bool>visited(nums.size(), false);
    19         vector<vector<int>>ans;
    20         build(visited, nums, ans, vector<int>());
    21         return ans;
    22     }
    23 };
    View Code

    一开始的暴力方法↑ 不出所料很慢

    换了一种也没好多少

     1 class Solution {
     2 public:
     3     vector<vector<int>> permute(vector<int>& nums) {
     4         vector<vector<int>>ans;
     5         ans.push_back(vector<int>(1, nums[0]));
     6         for (int i = 1; i < nums.size(); i++) {
     7             vector<vector<int>>tmp = ans;
     8             ans.clear();
     9             for (int j = 0; j < tmp.size(); j++) {
    10                 vector<int>now = tmp[j];
    11                 for (int k = 0; k <= now.size(); k++) {
    12                     now.insert(now.begin() + k, nums[i]);
    13                     ans.push_back(now);
    14                     now.erase(now.begin() + k);
    15                 }
    16             }
    17         }
    18         return ans;
    19     }
    20 };
    View Code

    (算了算了

  • 相关阅读:
    Cookie与session
    orm之中介模型
    mysql数据库基础命令——幕布链接
    css——幕布链接
    HTML基础——幕布链接
    js基础——幕布
    三层结构与MVC
    [C++]3-1 得分(Score ACM-ICPC Seoul 2005,UVa1585)
    [C++]环状序列(CircularSequence,ACM/ICPC Seoul 2004,UVa1584)
    [C++]猜数字游戏的提示(Master-Mind Hints,UVa340)
  • 原文地址:https://www.cnblogs.com/yalphait/p/10354986.html
Copyright © 2011-2022 走看看