[LeetCode] Permutations
题目描述:
Given a collection of distinct numbers, return all possible permutations.
For example,[1,2,3]
have the following permutations:[1,2,3]
, [1,3,2]
, [2,1,3]
, [2,3,1]
, [3,1,2]
, and [3,2,1]
.
解题思路:
递归方法,用一个数组来记录当前元素是否已经被访问
1 class Solution { 2 public: 3 vector<vector<int>> permute(vector<int>& nums) { 4 vector<vector<int>> result; 5 vector<int> elem; 6 vector<bool> visited(nums.size(), false); 7 permute(nums, visited, result, elem); 8 return result; 9 } 10 private: 11 void permute(const vector<int> &nums, vector<bool> &visited, vector<vector<int>> &result, vector<int> &elem) { 12 if (nums.size() == elem.size()) { 13 result.push_back(elem); 14 return; 15 } 16 17 for (int i = 0; i < nums.size(); ++i) { 18 if (!visited[i]) { 19 visited[i] = true; 20 elem.push_back(nums[i]); 21 permute(nums, visited, result, elem); 22 visited[i] = false; 23 elem.pop_back(); 24 } 25 } 26 } 27 };
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步