您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關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; } /** * 先序遍歷 根節點 ---> 左子樹 ---> 右子樹 * * @param $root */ function preorder ($root) { echo $root->value; if (!empty($root->left)) { preorder($root->left); } if (!empty($root->right)) { preorder($root->right); } } /** * 中序遍歷,左子樹---> 根節點 ---> 右子樹 * * @param $root */ function inorder ($root) { if (!empty($root->left)) { inorder($root->left); } echo $root->value; if (!empty($root->right)) { inorder($root->right); } } /** * 后序遍歷,左子樹 ---> 右子樹 ---> 根節點 * * @param $root */ 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算法面試題及答案示例的分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。