日常,练手,没查过是否最优解。
有更优解的朋友,欢迎留言怼我,感谢。
Days 2
题:给定一个乱序的、纯数字的、值不重复的数组,请用递归,将其排序。
输入:[12, 42, 5, 23, 65]
输出:[5, 12, 23, 42, 65]
解:
function quick_sort($array)
{
if (count($array) > 1) {
$array_left = [];
$array_right = [];
$base = array_pop($array);
foreach ($array as $item) {
if ($base < $item) {
array_push($array_left, $item);
} else {
array_push($array_right, $item);
}
}
$array_left = quick_sort($array_left);
$array_right = quick_sort($array_right);
return array_merge($array_left, [$base], $array_right);
}
return $array;
}
$array = [2, 6, 12, 3, 1, 9];
print_r(quick_sort($array)); /* Result is Array
(
[0] => 12
[1] => 9
[2] => 6
[3] => 3
[4] => 2
[5] => 1
).
*/
Days 1
题:给定一个数字数组,请用递归,将其内部的值相加。
输入:[2, 4, 6]
输出:12
解:
function sum($array)
{
if (count($array) > 1) {
return array_pop($array) + sum($array);
}
return $array[0];
}
echo sum([2, 6, 3, 1, 9]); // Result is 21.
题:给定数组与上题相同,请用递归,统计其内部值的个数。
输入:[2, 4, 6]
输出:3
解:
function array_count($array)
{
$count = 0;
if ($array !== []) {
array_pop($array);
return ++$count + array_count($array);
}
return $count;
}
echo array_count([2, 6, 10, 3, 1, 9]); // Result is 6
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。