php算法面试题及答案示例的分析
这篇文章将为大家详细讲解有关php算法面试题及答案示例的分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
php有什么用
php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,主要用来做网站开发,许多小型网站都用php开发,因为php是开源的,从而使得php经久不衰。
题目一:
一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。
function king($m, $n) {if (1 >= $n) {return $n;}$monkeys = range(1, $n);$count = $n;while ($count > 1) {$remainder = $m % $count;unset($monkeys[$remainder - 1]);$monkeys = array_values($monkeys);$count--;}return array_shift($monkeys);}
题目二:
有一母牛,到4岁可生育,每年一头,所生均是一样的母牛,到15岁绝育,不再能生,20岁死亡,问n年后有多少头牛。
function cows ($n) {$cows = [1];for ($i = 1; $i <= $n; $i++) {// 新出生的牛$new_number = 0;foreach ($cows as $age => $num) {// 4岁到14岁的牛生育新的母牛if ($age >= 3 &&$age <= 13) {$new_number += $num;}}// 将新出生的牛加到数组开头array_unshift($cows, $new_number);// 取出数组的前20个单元$cows = array_slice($cows, 0, 20);}return array_sum($cows);}
题目三:
冒泡排序
function bubble_sort ($array) {$array = array_values($array);for ($i = 0; $i < count($array); $i++) {for ($j = 0;$j < count($array) - $i - 1; $j++) {if ($array[$j] > $array[$j + 1]) {$temp = $array[$j + 1];$array[$j + 1] = $array[$j];$array[$j] = $temp;}}}return $array;}
题目四:
快速排序
function quick_sort ($array) {if (count($array) <= 1) {return $array;}$left_array = [];$right_array = [];$key = array_shift($array);foreach ($array as $value) {if ($key > $value) {$left_array[] = $value;} else {$right_array[] = $value;}}return array_merge(quick_sort($left_array), [$key], quick_sort($right_array));}
(学习视频分享:php视频教程)
题目五:
选择排序
function select_sort ($array) {$sort_array = [];while (count($array)) {$min = null;$min_key = null;foreach ($array as $key => $value) {if (is_null($min)) {$min = $value;$min_key = $key;} elseif ($min > $value) {$min = $value;$min_key = $key;}}$sort_array[] = $min;unset($array[$min_key]);}return $sort_array;}
题目六:
字符集合:输入一个字符串,求出该字符串包含的字符集合,并按顺序排序
function unique_char ($str) {$arr = array_unique(str_split($str));sort($arr);return implode('', $arr);}
题目七:
遍历一个文件下的所有文件和子文件夹下的文件
function all_file ($dir) {if (is_dir($dir)) {$resource = opendir($dir);while ($file = readdir($resource)) {if (in_array($file, ['.', '..'])) {continue;} elseif (is_dir($dir . '/' . $file)) {all_file($dir . '/' . $file);} else {echo $dir . '/' . $file, "\n";}}} else {echo $dir, "\n";}}
题目八:
有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台阶走完?例如:总共3级台阶,可以先迈1级再迈2级,或者先迈2级再迈1级,或者迈3次1级总共3中方式.(实际上是斐波那契数列)
function ladder($steps) {return $steps <2 ? 1 : ladder($steps - 1) + ladder($steps - 2);}
题目九:
遍历二叉树
class Node {public $value;public $left;public $right;}function preorder ($root) {echo $root->value;if (!empty($root->left)) {preorder($root->left);}if (!empty($root->right)) {preorder($root->right);}}function inorder ($root) {if (!empty($root->left)) {inorder($root->left);}echo $root->value;if (!empty($root->right)) {inorder($root->right);}}function tailorder ($root) {if (!empty($root->left)) {tailorder($root->left);}if (!empty($root->right)) {tailorder($root->right);}echo $root->value;}$d = new Node;$d->value = 'D';$b = new Node;$b->value = 'B';$b->left = $d;$e = new Node;$e->value = 'E';$f = new Node;$f->value = 'F';$c = new Node;$c->value = 'C';$c->left = $e;$c->right = $f;$a = new Node;$a->value = 'A';$a->left = $b;$a->right = $c;preorder($a);echo "\n";inorder($a);echo "\n";tailorder($a);echo "\n";
关于“php算法面试题及答案示例的分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341