[LeetCode] Permutations
生活随笔
收集整理的這篇文章主要介紹了
[LeetCode] Permutations
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Given a collection of numbers, return all possible permutations.
For example,
[1,2,3]?have the following permutations:
[1,2,3],?[1,3,2],?[2,1,3],?[2,3,1],?[3,1,2], and?[3,2,1].
Solution:
對一個沒有重復元素的序列做全排序,可以考慮采用遞歸的思路。n個元素的全排列為n個元素分別作為第一個元素,并加上分別去除首元素剩下元素的全排列。當序列遞歸到只有一個元素時,
遞歸終止,一個可行的全排列產生。
class Solution { public:vector<vector<int> > ans;vector<int> src;int len;void perm(int i){if(i == len - 1){//a new permutation comesvector<int> tmp;for(int i = 0;i < len;i++)tmp.push_back(src[i]);ans.push_back(tmp);return;}else{for(int k = i;k < len;k++){int tmp = src[i];src[i] = src[k];src[k] = tmp;perm(i + 1);src[k] = src[i];src[i] = tmp;}}}vector<vector<int> > permute(vector<int> &num) {len = num.size();if(len == 0) return ans;src = num;perm(0);return ans;} };轉載于:https://www.cnblogs.com/changchengxiao/p/3608941.html
總結
以上是生活随笔為你收集整理的[LeetCode] Permutations的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: apache日志信息详解
- 下一篇: Centos调整时间时区