麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

字符串應用之全排列

2019-11-11 05:27:21
字體:
來源:轉載
供稿:網友

之前在leetcode做過全排列的題目,LeetCode46和LeetCode47分別是不帶重復元素和帶重復元素的全排列,當時圖個簡單,直接用STL的next_permutation去做了,這一次把遞歸算法學習了一遍。

不重復元素的全排列

對于1234….n這樣的全排列,他的全排列有n!種,因此求解該問題的時間復雜度為n!。其實要求全排列,無非就是對元素進行交換,使他們出現在不同的位置。

代碼

class Solution { PRivate: void func(vector<vector<int>>&res,vector<int>&nums,int n) { if(n==nums.size()-1) { res.push_back(nums); return; } for(int i=n;i<nums.size();++i) { swap(nums[i],nums[n]); func(res,nums,n+1); swap(nums[i],nums[n]); } }public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>>res; func(res,nums,0); return res; }};

重復元素的全排列

由于我們是迭代的交換元素,當迭代到某個元素時,如果前面出現過一樣的元素,那么就無需再做這次交換了。

代碼

class Solution { #if 1 bool dup(vector<int>&nums,int n,int t) { for(int j=n;j<t;++j) { if(nums[j]==nums[t]) return true; } return false; } #endif void func(vector<vector<int>>&res,vector<int>&nums,int n) { if(n==nums.size()-1) { res.push_back(nums); return; } for(int i=n;i<nums.size();++i) { if(dup(nums,n,i)) { continue; } swap(nums[i],nums[n]); func(res,nums,n+1); swap(nums[i],nums[n]); } }public: vector<vector<int>> permuteUnique(vector<int>& nums) { vector<vector<int>>res; func(res,nums,0); return res; }};

降低時間復雜度

由于迭代的判斷是否重復會增加時間復雜度,我們可以用一個set保存出現過的元素,空間換時間。

class Solution { #if 0 bool dup(vector<int>&nums,int n,int t) { for(int j=n;j<t;++j) { if(nums[j]==nums[t]) return true; } return false; } #endif void func(vector<vector<int>>&res,vector<int>&nums,int n) { if(n==nums.size()-1) { res.push_back(nums); return; } // visit.clear(); // unordered_map<int,int>dup; unordered_set<int>dup; for(int i=n;i<nums.size();++i) { if(dup.find(nums[i])!=dup.end()) continue; dup.insert(nums[i]); /* if(dup(nums,n,i)) { continue; } */ swap(nums[i],nums[n]); func(res,nums,n+1); swap(nums[i],nums[n]); } }public: vector<vector<int>> permuteUnique(vector<int>& nums) { vector<vector<int>>res; func(res,nums,0); return res; }};
上一篇:.net 第二章上機練習1

下一篇:Hdu 1237

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久久一区 | 久久性生活免费视频 | 成人精品久久 | 久草在线手机观看 | 久久久久久久久久久高潮一区二区 | 99re热视频这里只精品 | 欧美四级在线观看 | 欧美成人精品一区二区三区 | 欧美一级免费视频 | 欧美 国产 亚洲 卡通 综合 | 午夜视频观看 | 羞羞电影网 | 免费国产成人高清在线看软件 | 国产女王女m视频vk 中文日韩 | 日韩av影片在线观看 | 91九色视频在线播放 | 免费黄色一级网站 | 高清国产午夜精品久久久久久 | www久| 国产亚洲精彩视频 | 制服丝袜日日夜夜 | 亚洲一区二区三区视频免费 | 激情久久一区二区 | 成人黄视频在线观看 | 国产免费久久久久 | 亚洲成人精品视频 | 九九热精品视频在线播放 | 欧日韩在线视频 | 精品国产专区 | 久久久久免费精品国产小说色大师 | www久久艹| www.9191.com| 欧美一级淫片免费播放口 | 国产免费传媒av片在线 | 亚洲免费片 | 欧美一级电影网 | 午夜伦情电午夜伦情电影 | 黄色一级片在线免费观看 | 韩国一级免费视频 | 国产女厕一区二区三区在线视 | 日韩大片在线永久观看视频网站免费 |