【LeetCode】马三来刷题之Permutations
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                【LeetCode】马三来刷题之Permutations
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                最近進行了一次在線筆試,用的是codility的在線OJ,結(jié)果不是很理想,第一道題22分,第二道題100分,第三道,第四道由于沒有提交的了0分(在本地IDE寫的代碼,因為樣例沒過就沒提交,后來前輩說沒過也應(yīng)該提交的,苦逼~),太丟人了。果然1年多不刷題,手也生了,頭腦也不靈光了,痛定思痛,從今天開始恢復(fù)每天切題一道。
為了和博客園的博客區(qū)別開來,我就把刷題的博客放到CSDN了,以便更好的分類和查看。
第一天恢復(fù)刷題,就先從一個簡單的入手吧: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
很簡單,就是求一個數(shù)組的全排列,用了兩種方法過了這道題,分別是next_permutation()和DFS。先來看一下next_permutation()解法,next_permutation()是STL庫中的一個函數(shù),可以很方便的求出下一個排列。
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; }
再來看看用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的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 网站备案需要什么材料
- 下一篇: Proxy(代理)服务器
