
PHP算法面试题
PHP算法面试精选汇编
MarcoPage
干点自己喜欢做的事!
计算机系的同学需要课程设计或者毕业设计的可以 V 我!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
61、PHP 实现最短路径的Dijkstra算法
【代码】82、PHP 实现最短路径的Dijkstra算法。原创 2024-08-07 09:48:33 · 144 阅读 · 0 评论 -
60、PHP 实现 单词查找树算法
【代码】60、PHP 实现 单词查找树算法。原创 2024-08-06 08:41:22 · 366 阅读 · 0 评论 -
58、PHP 实现桶排序
桶排序的原理是:使用数组中最大数作为下标(N),建立一个(N)长度的初始化容器(桶),然后将测试数据(所需排序的数据)进行循环,放入对应的桶内。缺点:桶容器的排序效率是最快,最简单的,但同时它的空间消耗也是最大的,所以桶排序的应用场景一般是在当最大排序数相较要小时。最后,循环桶里的元素,并且输出,进行从大到小或从小到大的排序。数据的最大长度一定是在范围(N)内的。原创 2024-08-05 08:41:54 · 339 阅读 · 0 评论 -
59、PHP实现 猴子选大王
然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,一群猴子排成一圈,按1,2,…输入m、n,输出最后那个大王的编号。原创 2024-08-04 08:21:44 · 232 阅读 · 0 评论 -
57、PHP 实现 从扑克牌中随机抽取5张牌,判断是不是一个顺子
即这5张牌是不是连续的2-10位数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。不难想象,我们可以把5张牌看成由5个数字组成的数组。大小王是特殊的数字,我们不妨把它们都当成0,这样和其他扑克牌代表的数字就不重复了。最直观的是,我们把数组排序。但值得注意的是,由于0可以当成任意数字,我们可以用0去补满数组中的空缺。但如果我们有足够的0可以补满这两个数字的空缺,这个数组实际上还是连续的。也就是排序之后的数组不是连续的,即相邻的两个数字相隔若干个数字,原创 2024-08-03 07:46:53 · 849 阅读 · 0 评论 -
56、php实现N的阶乘末尾有多个0
N的阶乘为K和10的M次方的乘积,那么N!如果将N的阶乘分解后,那么N的阶乘可以分解为: 2的X次方,3的Y次方,4的Z次方,…由于10 = 2 * 5,所以M只能和X和Z有关,每一对2和5相乘就可以得到一个10,因为被2整除的频率比被5整除的频率高的多。所以可以把公式简化为M=Z。所以我们求解N的阶乘最后的0.相当于求解里面有多个5的因子。于是M = MIN( X,Z),不难看出X大于Z,当我们遇到一大问题可以拆成一个个小的问题,来求解。5 = 120 末端有1个0。原创 2024-08-02 09:52:02 · 693 阅读 · 0 评论 -
55、PHP实现插入排序、二分查找
【代码】55、PHP实现插入排序、二分查找。原创 2024-08-01 09:42:35 · 313 阅读 · 0 评论 -
54、PHP 实现希尔排序
【代码】54、PHP 实现希尔排序。原创 2024-07-31 08:56:04 · 540 阅读 · 0 评论 -
53、PHP 实现归并排序
【代码】53、PHP 实现归并排序。原创 2024-07-30 12:12:28 · 477 阅读 · 0 评论 -
52、PHP 实现选择排序
【代码】52、PHP 实现选择排序。原创 2024-07-29 09:22:12 · 486 阅读 · 0 评论 -
51、PHP 实现简单的快速排序
【代码】51、PHP 实现简单的快速排序。原创 2024-07-28 10:40:24 · 290 阅读 · 0 评论 -
50、PHP 实现选择排序
【代码】50、PHP 实现选择排序。原创 2024-07-27 11:48:54 · 443 阅读 · 0 评论 -
49、PHP 实现堆排序
【代码】49、PHP 实现堆排序。原创 2024-07-26 09:41:41 · 419 阅读 · 0 评论 -
48、PHP 实现冒泡排序法
【代码】48、PHP 实现冒泡排序法。原创 2024-07-25 12:00:59 · 409 阅读 · 0 评论 -
47、PHP实现机器人的运动范围
地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。原创 2024-07-24 09:32:41 · 908 阅读 · 0 评论 -
46、PHP实现矩阵中的路径
路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。原创 2024-07-23 09:09:50 · 336 阅读 · 0 评论 -
45、PHP 实现滑动窗口的最大值
如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。他们的最大值分别为{4,4,6,6,6,5}那么一共存在6个滑动窗口,原创 2024-07-22 08:41:52 · 374 阅读 · 0 评论 -
44、PHP 实现数据流中的中位数(含源码)
如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如何得到一个数据流中的中位数?原创 2024-07-21 09:18:53 · 274 阅读 · 0 评论 -
43、PHP 实现序列化二叉树、二叉搜索树的第k个结点
例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。请实现两个函数,分别用来序列化和反序列化二叉树。给定一颗二叉搜索树,请找出其中的第k大的结点。原创 2024-07-20 08:56:15 · 598 阅读 · 0 评论 -
42、PHP 实现把二叉树打印成多行
从上到下按层打印二叉树,同一层结点从左至右输出。原创 2024-07-19 09:46:02 · 473 阅读 · 0 评论 -
41、PHP 实现按之字形顺序打印二叉树
第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,原创 2024-07-18 07:09:17 · 143 阅读 · 0 评论 -
40、PHP 实现对称的二叉树(含源码)
注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。请实现一个函数,用来判断一颗二叉树是不是对称的。原创 2024-07-17 09:11:12 · 221 阅读 · 0 评论 -
39、PHP 实现二叉树的下一个结点(含源码)
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。原创 2024-07-16 08:00:31 · 401 阅读 · 0 评论 -
38、php 实现删除链表中重复的结点(含源码)
例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。原创 2024-07-15 09:39:31 · 258 阅读 · 0 评论 -
37、PHP 实现一个链表中包含环,请找出该链表的环的入口结点
一个链表中包含环,请找出该链表的环的入口结点。原创 2024-07-14 08:21:49 · 274 阅读 · 0 评论 -
36、PHP 实现表示数值的字符串、字符流中第一个不重复的字符
例如,字符串"+100",“5e2”,“-123”,“3.1416"和”-1E-16"都表示数值。但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。请实现一个函数用来找出字符流中第一个只出现一次的字符。如果当前字符流没有存在出现一次的字符,返回#字符。原创 2024-07-13 09:55:19 · 415 阅读 · 0 评论 -
35、php 实现构建乘积数组、正则表达式匹配
打包H5手机版可以本地访问;将index.*****.js中的base:“/“修改为base:”./”;就可以访问图片路径构建乘积数组。给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…a"匹配,但是与"aa.a"和"ab*a"均不匹配。在本题中,匹配是指字符串的所有字符匹配整个模式。'表示它前面的字符可以出现任意次(包含0次)。例如,字符串"aaa"与模式"a.a"和"ab。模式中的字符’.‘表示任意一个字符,而’请实现一个函数用来匹配包括’.‘和’其中B中的元素B[i]=A[0]原创 2024-07-12 11:05:04 · 288 阅读 · 0 评论 -
34、PHP 实现把字符串转换成整数、数组中重复的数字
例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。数值为0或者字符串不是一个合法的数值则返回0。如果是合法的数值表达则返回该数字,否则返回0。输入一个字符串,包括数字字母符号,可以为空。请找出数组中任意一个重复的数字。也不知道每个数字重复几次。原创 2024-07-11 07:57:58 · 228 阅读 · 0 评论 -
33、PHP求1+2+3+...+n、php 实现不用加减乘除做加法
n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。原创 2024-07-09 10:28:38 · 248 阅读 · 0 评论 -
32、php 实现孩子们的游戏(圆圈中最后剩下的数)(含源码)
描述:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!原创 2024-07-08 09:07:23 · 189 阅读 · 0 评论 -
31、PHP 实现扑克牌顺子(含源码)
上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!现在,要求你使用这幅牌模拟上面的过程,然后告诉我们LL的运气如何。“红心A,黑桃3,小王,大王,方片5”,“Oh My God!LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张。他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,原创 2024-07-07 08:32:08 · 275 阅读 · 0 评论 -
30、PHP 实现 左旋转字符串、翻转单词顺序列
后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。公司最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,原创 2024-07-06 08:27:17 · 335 阅读 · 0 评论 -
29、php实现和为S的两个数字(含源码)
是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输入一个递增排序的数组和一个数字S,在数组中查找两个数,对应每个测试案例,输出两个数,小的先输出。原创 2024-07-05 10:12:34 · 410 阅读 · 0 评论 -
28、PHP 实现数组中只出现一次的数字、和为S的连续正数序列
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。一个整型数组里除了两个数字之外,其他的数字都出现了两次。输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?Good Luck!但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。原创 2024-07-04 09:04:58 · 249 阅读 · 0 评论 -
27、PHP 实现二叉树的深度、平衡二叉树
从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。输入一棵二叉树,判断该二叉树是否是平衡二叉树。输入一棵二叉树,求该树的深度。原创 2024-07-03 08:34:17 · 147 阅读 · 0 评论 -
26、PHP 实现数字在排序数组中出现的次数
从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。统计一个数字在排序数组中出现的次数。输入一棵二叉树,求该树的深度。原创 2024-07-02 09:41:33 · 291 阅读 · 0 评论 -
25、PHP 实现两个链表的第一个公共结点(含源码)
输入两个链表,找出它们的第一个公共结点。原创 2024-07-01 08:45:31 · 214 阅读 · 0 评论 -
24、PHP 实现第一个只出现一次的字符、数组中的逆序对
在一个字符串(1原创 2024-06-30 09:09:51 · 259 阅读 · 0 评论 -
23、PHP 实现把数组排成最小的数、丑数
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。原创 2024-06-29 07:05:32 · 261 阅读 · 0 评论 -
22、PHP 实现连续子数组的最大和、整数中1出现的次数
为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。原创 2024-06-28 10:00:09 · 372 阅读 · 0 评论