• 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);
    }
    }
    }
    }

  • 相关阅读:
    CSS知识点总结(一)
    HTML知识点总结(二)
    HTML/CSS 基础知识总结(一)
    Nodejs 发送邮件
    Nodejs 发送短信验证码
    Nodejs 上传下载功能的实现(同步)
    Nodejs报错集
    Nodejs的安装及配置
    nodejs+bootstrap实现分页效果
    切换Mac默认PHP版本为MAMP
  • 原文地址:https://www.cnblogs.com/corvus/p/12082119.html
Copyright © 2020-2023  润新知