LeetCode 0046. Permutations Solution in Java, Python, C++, JavaScript, Go & Rust | Explanation + Code

CoderIndeed
0
0046. Permutations

Description

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:

  • 1 <= nums.length <= 6
  • -10 <= nums[i] <= 10
  • All the integers of nums are unique.

Solutions

Solution 1: DFS (Backtracking)

We design a function dfs(i) to represent that the first i positions have been filled, and now we need to fill the i+1 position. We enumerate all possible numbers, if this number has not been filled, we fill in this number, and then continue to fill the next position, until all positions are filled.

The time complexity is O(n × n!), where n is the length of the array. There are n! permutations in total, and each permutation takes O(n) time to construct.

Similar problems:

PythonJavaC++GoTypeScriptRustJavaScriptC#
class Solution: def permute(self, nums: List[int]) -> List[List[int]]: def dfs(i: int): if i >= n: ans.append(t[:]) return for j, x in enumerate(nums): if not vis[j]: vis[j] = True t[i] = x dfs(i + 1) vis[j] = False n = len(nums) vis = [False] * n t = [0] * n ans = [] dfs(0) return ans(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !