首页 > 学院 > 开发设计 > 正文

【LeetCode】46. Permutations

2019-11-06 07:14:02
字体:
来源:转载
供稿:网友

题目描述

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], [3,2,1]]

解题思路

回溯法。 用一个vector来标记元素是否被访问过。当全部元素都被访问之后,就加入答案。

AC代码

class Solution {public: void backtract(vector<vector<int>>& ans, vector<int>& cur, const vector<int>& nums, vector<bool>& isVisited) { if (cur.size() >= nums.size()) { ans.push_back(cur); return; } for (int i = 0; i < nums.size(); ++i) { if (!isVisited[i]) { isVisited[i] = true; cur.push_back(nums[i]); backtract(ans, cur, nums, isVisited); cur.pop_back(); isVisited[i] = false; } } } vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> ans; vector<int> cur; vector<bool> isVisited(nums.size(), false); backtract(ans, cur, nums, isVisited); return ans; }};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表