解題思路
排列組合經典題。
想像每一次都從現有的 nums 拿一個走,接著繼續再從剩的在選一個,重複這個動作直到所有的都被選過為止。
程式碼
class Solution { public: void helper(vector<int>& nums, vector<vector<int>>& ans, vector<int> comb, vector<bool> isUsed) { if(comb.size() == nums.size()) { ans.push_back(comb); return; } for(int i=0; i<nums.size(); i++) { if(isUsed[i]) continue; comb.push_back(nums[i]); isUsed[i] = true; helper(nums, ans, comb, isUsed); comb.pop_back(); isUsed[i] = false; } } vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> ans; vector<int> comb; vector<bool> isUsed(nums.size(), false); helper(nums, ans, comb, isUsed); return ans; } };
沒有留言:
張貼留言