Leetcode基础刷题之PHP解析(78. Subsets)


2019-6-13 期四 

Leetcode基础刷题之PHP解析(47. Permutations II)

e061afa89017a8b75d1ec7497b3e8c4d.png


给定一个不重复的数组,返回它所有的子集,并且不能重复,这两周选择递归的标签其实刷的都是关于回溯法思想,只是实现方式用的是递归。



这些题目解释起来的原理都是回溯的解题思路,今天换个方式,画了个运行流程。一层一层的往下找,直到结束,退回一层,继续找,最终的顺序就是图上花的[][1][1,2][1,2,3][2,3]......好吧这图我都看不下去了,将就点,看代码。

5bfdc50868529fd5713d8ffbeec8dc3b.png


  /**
     * @param Integer[] $nums
     * @return Integer[][]
     */
    function subsets($nums) {
        $out=[];
        $res=[];
        $this->helper($nums,0,$out,$res);
        return $res;
    }
    
    function helper($nums,$index,&$out,&$res){
           array_push($res,$out);
        for($i=$index;$i<count($nums);$i++){
            array_push($out,$nums[$i]);
            $this->helper($nums,$i+1,$out,$res);
            array_pop($out);
        }
    }

Github整理地址:https://github.com/wuqinqiang/leetcode-php


Vote Vote Cancel Collect Collect Cancel

<< 上一篇: TCP/IP 网络协议的简单介绍

>> 下一篇: Beego 框架入门篇:Beego! 一个 Golang Web 框架