【LeetCode】0046.全排列 (递归详解)
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode】0046.全排列 (递归详解)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求
圖解示例
算法思想
使用遞歸的方法
我將每一步遞歸都打出來,更方便大家理解
完整代碼
class Solution { public:vector<vector<int> > permute(vector<int>& nums) {int len = nums.size();if (len == 0) {return ans;}vector<int> result;bool flag[len] = {false};findPermute(0, result, nums, len, flag);return ans;} private:vector<vector<int> > ans;void findPermute(int layer, vector<int> result, vector<int>& nums, int len, bool flag[]) {if(layer==len){ans.push_back(result);return;}for(int i = 0; i < len; i++) {if(!flag[i]) {result.push_back(nums[i]);flag[i] = true;findPermute(layer+1, result, nums, len, flag);flag[i] = false;result.pop_back();}}} };設計分析
時間復雜度:O(n * n!)(數數圖解的箭頭吧!)
空間復雜度:O(n)
提交結果
若有其他解法,歡迎評論區補充。
總結
以上是生活随笔為你收集整理的【LeetCode】0046.全排列 (递归详解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【LeetCode】0103.二叉树的锯
- 下一篇: 【Git】本地仓库上传到github免密