zoukankan      html  css  js  c++  java
  • PHP-全排列

    给定一个没有重复数字的序列,返回其所有可能的全排列。

    示例:

    输入: [1,2,3]
    输出:
    [
    [1,2,3],
    [1,3,2],
    [2,1,3],
    [2,3,1],
    [3,1,2],
    [3,2,1]
    ]

    来源:力扣(LeetCode)

    自己写的比较麻烦下面是LeetCode 德罗西的答案感觉讲解写的比较清楚

    解题思路
    这是一道经典的回溯算法。
    回溯中参数为原始数组nums,以及当前数组arr
    回溯的终止条件为,当前arr的个数已经等于原始数组nums
    回溯的处理,循环遍历原始数组nums,当前值不存在arr中时,将该值放入arr中,递归调用
    由于上面的行为会找到最终答案,所以,在处理完上面请求时,将arr进行出栈操作,继续遍历

    代码
    class Solution {

    /**
    * @param Integer[] $nums
    * @return Integer[][]
    */
    function permute($nums) {
    $this->backtracking($nums, []);
    return $this->res;
    }
    function backtracking($nums, $arr) {
    if (count($arr) == count($nums)) {
    $this->res[] = $arr;
    return;
    }

    foreach ($nums as $value) {
    if (!in_array($value, $arr)) {
    $arr[] = $value;
    $this->backtracking($nums, $arr);
    array_pop($arr);
    }
    }
    }
    }

  • 相关阅读:
    学习Timer定时器
    C++ 延时等待(sleep/timer/wait)
    MFC学习问题总结
    node.js
    总结
    关于Windows
    关于数组
    每周一次
    每周一次
    每周一次
  • 原文地址:https://www.cnblogs.com/corvus/p/12082119.html
Copyright © 2011-2022 走看看