Content-Length: 11248 | pFad | https://leetcode-in-net.github.io/LeetCodeNet/G0001_0100/S0046_permutations

LeetCode in Net | C#-based LeetCode algorithm problem solutions, regularly updated.

LeetCode in Net

46. Permutations

Medium

Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order.

Example 1:

Input: nums = [1,2,3]

Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

Example 2:

Input: nums = [0,1]

Output: [[0,1],[1,0]]

Example 3:

Input: nums = [1]

Output: [[1]]

Constraints:

Solution

using System.Collections.Generic;

public class Solution {
    public IList<IList<int>> Permute(int[] nums) {
        if (nums == null || nums.Length == 0) {
            return new List<IList<int>>();
        }
        IList<IList<int>> finalResult = new List<IList<int>>();
        PermuteRecur(nums, finalResult, new List<int>(), new bool[nums.Length]);
        return finalResult;
    }

    private void PermuteRecur(
            int[] nums, IList<IList<int>> finalResult, List<int> currResult, bool[] used) {
        if (currResult.Count == nums.Length) {
            finalResult.Add(new List<int>(currResult));
            return;
        }
        for (int i = 0; i < nums.Length; i++) {
            if (used[i]) {
                continue;
            }
            currResult.Add(nums[i]);
            used[i] = true;
            PermuteRecur(nums, finalResult, currResult, used);
            used[i] = false;
            currResult.RemoveAt(currResult.Count - 1);
        }
    }
}








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://leetcode-in-net.github.io/LeetCodeNet/G0001_0100/S0046_permutations

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy