Permutations

Permutations.png

===================== 解題思路 =====================

同樣使用 backtrack 的方式不斷放入 element 進入一組 tmp vector, 每放入一筆資料就馬上 recursive 的做 DFS 檢查. 當(dāng) tmp 放滿跟題目給的 vector 等量的資料時 相當(dāng)於找到一組排列方式 即可存入 result 之中. 在 for loop 進行檢索的時候 重點只能放入當(dāng)前 tmp vector 還尚未放入過的資料 所以有一個 find 的步驟塞選能放入的資料

===================== C++ code ====================

<pre><code>
class Solution {

public:

 /**
 * @param nums: A list of integers.
 * @return: A list of permutations.
 */
void BT(vector<vector<int>> &res, vector<int> &tmp, vector<int> nums)
{
    if(tmp.size() == nums.size()) res.emplace_back(tmp);
    else{
        for(int i = 0; i < nums.size(); i++)
        {
            if(find(tmp.begin(), tmp.end(), nums[i]) == tmp.end())
            {
                tmp.emplace_back(nums[i]);
                BT(res, tmp, nums);
                tmp.pop_back();
            }
        }
    }
}
 
vector<vector<int> > permute(vector<int> nums) {
    // write your code here
   vector<vector<int>> res;
   vector<int> tmp;
   sort(nums.begin(), nums.end());
   BT(res, tmp, nums);
   return res;
}

};
<code><pre>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容