【LeetCode】马三来刷题之Permutations
最近進(jìn)行了一次在線筆試,用的是codility的在線OJ,結(jié)果不是很理想,第一道題22分,第二道題100分,第三道,第四道由于沒有提交的了0分(在本地IDE寫的代碼,因?yàn)闃永龥]過(guò)就沒提交,后來(lái)前輩說(shuō)沒過(guò)也應(yīng)該提交的,苦逼~),太丟人了。果然1年多不刷題,手也生了,頭腦也不靈光了,痛定思痛,從今天開始恢復(fù)每天切題一道。
為了和博客園的博客區(qū)別開來(lái),我就把刷題的博客放到CSDN了,以便更好的分類和查看。
第一天恢復(fù)刷題,就先從一個(gè)簡(jiǎn)單的入手吧:https://leetcode.com/problems/permutations/? ? ?題目如下:
Given a collection of?distinct?numbers, return all possible permutations.
For example,
[1,2,3]?have the following permutations:
Subscribe?to see which companies asked this question
很簡(jiǎn)單,就是求一個(gè)數(shù)組的全排列,用了兩種方法過(guò)了這道題,分別是next_permutation()和DFS。先來(lái)看一下next_permutation()解法,next_permutation()是STL庫(kù)中的一個(gè)函數(shù),可以很方便的求出下一個(gè)排列。
vector< vector<int> > permute(vector<int>& nums) {vector< vector<int> > result;sort(nums.begin(),nums.end());do{result.push_back(nums);}while(next_permutation(nums.begin(),nums.end()));return result; }
再來(lái)看看用DFS如何解答:
void dfs(vector<int> &num, int begin, vector<vector<int> > &result) {if (begin >= num.size()) {result.push_back(num);return;}for (int i = begin; i < num.size(); i++) {swap(num[begin], num[i]);dfs(num, begin + 1, result);swap(num[begin], num[i]);} } vector<vector<int> > permute(vector<int> &num) {vector<vector<int> > result;dfs(num, 0, result);return result; } 每天一道題,保持新鮮感,就這樣~
總結(jié)
以上是生活随笔為你收集整理的【LeetCode】马三来刷题之Permutations的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 网站备案需要什么材料
- 下一篇: Proxy(代理)服务器