题目描述:给定一个列表,该列表中的每个要素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。
样例:给定 [1,2,[1,2]],返回 [1,2,1,2]。给定 [4,[3,[2,[1]]]],返回 [4,3,2,1]。
方法一:
用递归的思路解决(需要注意的一点是递归“触底”的条件是当这个给出的列表本身是整数)
1 <?php 2 /** 3 * 题目描述:给定一个列表,该列表中的每个要素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。 4 * 样例:给定 [1,2,[1,2]],返回 [1,2,1,2]。给定 [4,[3,[2,[1]]]],返回 [4,3,2,1] 5 */ 6 7 function show($info='') 8 { 9 echo "<pre>"; 10 print_r($info); 11 } 12 13 /** 14 * 递归实现 15 */ 16 function plane($data) 17 { 18 static $list = []; 19 20 if(is_array($data))//判断是否是数组 21 { 22 foreach($data as $v) 23 { 24 plane($v); 25 } 26 } else {//递归触底条件,给出的列表本身是整数 27 array_push($list, $data); 28 } 29 return $list; 30 } 31 32 $res = plane([[8,[9,20]],1,2,3,[4,5]]); 33 show($res);
方法二
用非递归的思路解决(队列)