0

0

常见的几道php算法面试题

王林

王林

发布时间:2021-03-03 17:24:39

|

4111人浏览过

|

来源于吴宇博客

转载

常见的几道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);
}

题目二:

立即学习PHP免费学习笔记(深入)”;

有一母牛,到4岁可生育,每年一头,所生均是一样的母牛,到15岁绝育,不再能生,20岁死亡,问n年后有多少头牛。

function cows ($n) {
	$cows = [1];
	for ($i = 1; $i zuojiankuohaophpcn= $n; $i++) {
		// 新出生的牛
		$new_number = 0;
		foreach ($cows as $age => $num) {
			// 4岁到14岁的牛生育新的母牛
			if ($age >= 3 &
			&
			$age zuojiankuohaophpcn
			= 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 zuojiankuohaophpcn count($array); $i++) {
		for ($j = 0;$j zuojiankuohaophpcn 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) zuojiankuohaophpcn
	= 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视频教程

题目五:

Kuwebs企业网站管理系统3.1.5 UTF8
Kuwebs企业网站管理系统3.1.5 UTF8

酷纬企业网站管理系统Kuwebs是酷纬信息开发的为企业网站提供解决方案而开发的营销型网站系统。在线留言模块、常见问题模块、友情链接模块。前台采用DIV+CSS,遵循SEO标准。 1.支持中文、英文两种版本,后台可以在不同的环境下编辑中英文。 3.程序和界面分离,提供通用的PHP标准语法字段供前台调用,可以为不同的页面设置不同的风格。 5.支持google地图生成、自定义标题、自定义关键词、自定义描

下载

选择排序

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 zuojiankuohaophpcn
	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视频教程

原文链接:https://www.woozee.com.cn/article/35.html

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

42

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

4

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.1万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号