日常,练手,没查过是否最优解。
有更优解的朋友,欢迎留言怼我,感谢。
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