46. 全排列
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/permutations
著作权归领扣网络所有。
给定一个 没有重复 数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
class Solution {
/**
* @param Integer[] $nums
* @return Integer[][]
*/
private $res = [];
function permute($nums) {
$this->dfs($nums, []);
return $this->res;
}
function dfs($nums, $path) {
if ( count($path) == count($nums) ) {
array_push($this->res, $path);
} else {
for ($i = 0; $i < count($nums); $i++) {
if ( in_array($nums[$i], $path ) ) continue;
array_push($path, $nums[$i]);
$this->dfs($nums, $path);
array_pop($path);
}
}
}
}