LeetCode 46. 全排列(Permutations)

題目描述

 

給定一個沒有重複數字的序列,返回其全部可能的全排列。spa

示例:code

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

 

解題思路

 

回溯法,從第一個數開始,依次與此位置向後的每個位置交換獲得新序列,而後遞歸向後重復此動做,在獲得某位置開頭的全部序列後要把交換後的序列復原。blog

 

代碼

 

 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 };
相關文章
相關標籤/搜索