-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5301e4a
commit ebfee22
Showing
3 changed files
with
131 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
--- | ||
title: 46.全排列 | ||
date: 2024-03-21 | ||
lang: 'zh-CN' | ||
sidebar: 'auto' | ||
categories: | ||
- LeeCode | ||
tags: | ||
location: HangZhou | ||
--- | ||
|
||
# Heading | ||
|
||
[[toc]] | ||
|
||
[46.全排列](https://leetcode.cn/problems/permutations/description/) | ||
|
||
Tags: algorithms linkedin microsoft backtracking | ||
|
||
Langs: c cpp csharp dart elixir erlang golang java javascript kotlin php python python3 racket ruby rust scala swift typescript | ||
|
||
- algorithms | ||
- Medium (79.07%) | ||
- Likes: 2846 | ||
- Dislikes: - | ||
- Total Accepted: 1M | ||
- Total Submissions: 1.3M | ||
- Testcase Example: '[1,2,3]' | ||
|
||
<p>给定一个不含重复数字的数组 <code>nums</code> ,返回其 <em>所有可能的全排列</em> 。你可以 <strong>按任意顺序</strong> 返回答案。</p> | ||
|
||
<p> </p> | ||
|
||
<p><strong>示例 1:</strong></p> | ||
|
||
<pre> | ||
<strong>输入:</strong>nums = [1,2,3] | ||
<strong>输出:</strong>[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] | ||
</pre> | ||
|
||
<p><strong>示例 2:</strong></p> | ||
|
||
<pre> | ||
<strong>输入:</strong>nums = [0,1] | ||
<strong>输出:</strong>[[0,1],[1,0]] | ||
</pre> | ||
|
||
<p><strong>示例 3:</strong></p> | ||
|
||
<pre> | ||
<strong>输入:</strong>nums = [1] | ||
<strong>输出:</strong>[[1]] | ||
</pre> | ||
|
||
<p> </p> | ||
|
||
<p><strong>提示:</strong></p> | ||
|
||
<ul> | ||
<li><code>1 <= nums.length <= 6</code></li> | ||
<li><code>-10 <= nums[i] <= 10</code></li> | ||
<li><code>nums</code> 中的所有整数 <strong>互不相同</strong></li> | ||
</ul> | ||
|
||
<<< @/src/LeeCode/46.全排列.js | ||
<<< @/src/LeeCode/46.全排列1.js |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
/* | ||
* @lc app=leetcode.cn id=46 lang=javascript | ||
* | ||
* [46] 全排列 | ||
* 回溯 | ||
*/ | ||
|
||
// @lc code=start | ||
/** | ||
* @param {number[]} nums | ||
* @return {number[][]} | ||
*/ | ||
var permute = function (nums) { | ||
const result = [] | ||
const dfs = (current, arr) => { | ||
if (arr.length === 0) { | ||
result.push(current) | ||
} | ||
|
||
for (let i = 0; i < arr.length; i++) { | ||
dfs( | ||
[...current, arr[i]], | ||
arr.filter((item, index) => index !== i), | ||
) | ||
} | ||
} | ||
dfs([], nums) | ||
return result | ||
} | ||
// @lc code=end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
/* | ||
* @lc app=leetcode.cn id=46 lang=javascript | ||
* | ||
* [46] 全排列 | ||
* 递归 | ||
*/ | ||
|
||
// @lc code=start | ||
/** | ||
* @param {number[]} nums | ||
* @return {number[][]} | ||
*/ | ||
var permute = function (nums) { | ||
if (nums.length === 0) { | ||
return [] | ||
} | ||
if (nums.length === 1) { | ||
return [nums] | ||
} | ||
|
||
const [first, ...rest] = nums | ||
const restArrange = permute(rest) | ||
|
||
const result = restArrange.reduce((acc, item) => { | ||
for (let i = 0; i <= item.length; i++) { | ||
const tmp = [...item] | ||
tmp.splice(i, 0, first) | ||
acc.push(tmp) | ||
} | ||
return acc | ||
}, []) | ||
|
||
return result | ||
} | ||
// @lc code=end |