Leetcode基础刷题之PHP解析(78. Subsets)
2019-6-13 星期四 开始吧
上一题链接Leetcode基础刷题之PHP解析(47. Permutations II)
题目描述
给定一个不重复的数组,返回它所有的子集,并且不能重复,这两周选择递归的标签其实刷的都是关于回溯法思想,只是实现方式用的是递归。
题目分析
这些题目解释起来的原理都是回溯的解题思路,今天换个方式,画了个运行流程。一层一层的往下找,直到结束,退回一层,继续找,最终的顺序就是图上花的[][1][1,2][1,2,3][2,3]......好吧这图我都看不下去了,将就点,看代码。
/** * @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
No Comments