public class Solution {
public IList<IList<int>> Permute(int[] nums) {
List<IList<int>> ret = new List<IList<int>>();
if (nums == null || nums.Length == 0)
{
return ret;
}
List<int> res = new List<int>();
bool[] used = new bool[nums.Length];
doPermute(nums, 0, used, res, ret);
return ret;
}
private void doPermute(int[] nums, int step, bool[] used, List<int> res, List<IList<int>> ret)
{
if (step == nums.Length)
{
List<int> temp = new List<int>(res);
ret.Add(temp);
return;
}
for (int i = 0; i < nums.Length; i++)
{
if (!used[i])
{
used[i] = true;
res.Add(nums[i]);
doPermute(nums, step + 1, used, res, ret);
res.RemoveAt(res.Count - 1);
used[i] = false;
}
}
}
}
Monday, August 22, 2016
Leetcode 46. Permutations
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment