Monday, August 22, 2016

Leetcode 46. Permutations

 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;  
       }  
     }  
   }  
 }  

No comments:

Post a Comment