
基础算法
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
乐逍遥☺
这个作者很懒,什么都没留下…
展开
-
PHP 实现两个有序数组的合并,并保持从小到大的顺序
给定两个从小到大排好序的整型数组,要求编写一个函数实现两个有序数组的合并,并保持从小到大的顺序。如: $arr_A=[1,3,6,9] $arr_B=[2,4,5,8,20] Combine($arr_A,$arr_B) 返回数组 [1,2,3,4,5,6,8,9,20]冒泡排序返回有序数组public function index() { $A=[1,...原创 2019-05-28 19:37:22 · 2979 阅读 · 0 评论 -
求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。/* 函数实现*/public function index() { return $this->sum(26,70); } public function sum($n,$m) { $arr = [$n,$m]; $str = arra...原创 2019-05-28 19:10:47 · 592 阅读 · 0 评论 -
PHP 求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
PHP 求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)用函数:public function index2() { $n = 10; $arr = range(1,$n); return array_sum($arr); }...原创 2019-05-23 09:58:52 · 390 阅读 · 0 评论 -
php 翻转单词顺序
最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?。编写一个函数实现上述要求,函数原型...原创 2019-05-22 09:06:26 · 519 阅读 · 0 评论 -
一个整型数组里找出两个只出现一次的数字。
一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。编写一个函数实现上述要求,函数原型为:FindNumsAppearOnce($array) $array表示满足条件的整型数组返回两个只出现一次的数字如:$array = [2,4,3,6,3,2,5,5]FindNumsAppearOnce($array) 返回[4,6]...原创 2019-05-21 10:25:03 · 483 阅读 · 0 评论 -
输入一个无序数组用冒泡排序返回有序数组
输入一个无序数组用冒泡排序返回有序数组public function index17(){ $arr=array(1,2,9,99,55,999,88,344,3424,324,24,432,32); $a=count($arr); for($b=0;$b<$a-$b;$b++) { for($i=0;$i<$a-1;$i++) { if($arr[$i]...原创 2019-06-14 11:20:43 · 1146 阅读 · 0 评论 -
PHP 实现斐波那契数列
PHP 实现斐波那契数列使用循环实现1 <?php 2 $arr[1] = 1;3 for($i = 2;$i < 100;$i++)4 {5 $arr[$i] = $arr[$i-1] + $arr[$i-2];6 }7 echo join(",",$arr); //将数组合并为一个字符串输出8 ?>使用递归实现function...原创 2019-05-13 19:43:00 · 772 阅读 · 0 评论 -
判断一个字符串是否是回文
判断一个字符串是否是回文 简单的解法/*判断是否是回文*/public function index16(){ $str = "ABCBA"; echo $str; /*输入的一个字符串,str_split分割为数组,判断数组第一个是否为“-”, 如果为负数,一定不是回文数,也可加一个可否被10整除的判断*/ $arr = str_split($str); ...原创 2019-05-18 08:15:28 · 1246 阅读 · 0 评论 -
php 1---100之间的和 几种方法
for 循环/*1---100之和*/ public function index9() { $sum = 0; for ($i=1; $i <=100 ; $i++) { $sum +=$i; } echo $sum; }while循环public function index10() { $sum = 0; $i=1; wh...原创 2019-05-20 10:49:01 · 7152 阅读 · 0 评论 -
自定义函数,传入两个参数,构建出一个X行Y列的表格,并且让表格的背景颜色各行换色
自定义函数,传入两个参数,构建出一个X行Y列的表格,并且让表格的背景颜色各行换色自定义函数传入两个参数 x代表行 y代表列 使用循环实现表格 隔行变色 if($k$2==1){ style="background-color: blue;"} 奇数行变色 public function index8() { $x = 5; //行 $y = 5 ; //列 ...原创 2019-05-20 20:37:49 · 1802 阅读 · 0 评论 -
对一个数组进行增、删、改、查
PHP 能够对一个数组进行增、删、改、查 设置数据 对数组指定元素删除,并保持索引连续 对数组指定元素进行更改 根据给定的值查找数据中是否存在这个元素,存在则输出 能够根据指定的下标插入指定元素 public function index4() { echo "源数据"."</br>"; $arr = ['1','2','3',...原创 2019-06-09 08:49:53 · 1308 阅读 · 0 评论 -
(1234567890),转换成(1,234,567,890)
完成这样的转换:如:(1234567890),转换成(1,234,567,890) public function index5() { $str = '1234567890'; /* //先反转字符串 $new_str=strrev($str); //在用chunk_split函数将字符串用“ , ” 分割成小块 $...原创 2019-06-12 14:29:07 · 1788 阅读 · 0 评论 -
将数组转化为字符串
把这个数组:$array = ('hello','world','!');转换成这样的字符串:"hello world !"public function index2() { $array = ['hello','world','!']; $app = implode(' ',$array); print_r($app); }...原创 2019-05-21 10:01:43 · 1184 阅读 · 0 评论 -
将字符串转化数组
将这样的字符串:"Hello world It's a beautiful day"转换成如下格式的数组:array([0]=>"Hello",[1]=>"world",[2]=>"It's",[3]=>"a",[4]=>"beautiful",[5]=>"day") public function index() { $st...原创 2019-05-21 10:02:10 · 962 阅读 · 0 评论 -
自定义函数编程实现:传入两个参数,作为循环的初值和终值,构建出一个长度为6个元素的数组出来,要求是这两个数之间的奇数作为数组的元素值,当到6个长度的时候不再进行追加
自定义函数编程实现:传入两个参数,作为循环的初值和终值,构建出一个长度为6个元素的数组出来,要求是这两个数之间的奇数作为数组的元素值,当到6个长度的时候不再进行追加自定义函数传入两个参数 作为初值和终值 构建出长度为6个元素的数组 判断 为奇数的数 有哪些 只要两个数之间的奇数到达6个长度的时候不再进行追加public function index7() { $k ...原创 2019-06-14 11:20:24 · 1141 阅读 · 0 评论 -
杨辉三角
//杨辉三角 public function sanjiao(){ $n=20; for($i=0;$i<$n;$i++){ for($j=0;$j<=$i;$j++){ if($j==0||$i==$j){ $arr[$i][$j]=1; }else { $arr[$i][$j]=$arr[$i-1][$j]+$arr[$i-1]...原创 2019-05-17 09:28:28 · 278 阅读 · 0 评论 -
有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。
有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。函数原型为:CountSteps($x,$y)例如:当$x=1,$y=1,可以画出图如下得到的结果将是 2 种走法public function index(){ echo $thi...原创 2019-05-17 09:27:56 · 1958 阅读 · 0 评论 -
根据已知有序数组,实现二分查找算法(折半查找),输入任意数字,返回该数字在数组中的下标位置。
根据已知有序数组,实现二分查找算法(折半查找),输入任意数字,返回该数字在数组中的下标位置。要求:编写函数实现上述要求,必须使用两种方法实现,一种递归,一种非递归/** * 二分查找 非递归 * @param Array $arr 待查找的数组 * @param Int $key 要查找的关键字 * @return Int */ function bin_searc...原创 2019-05-16 14:46:10 · 3737 阅读 · 1 评论 -
输入一个正整数,输出该数二进制表示中1的个数。
输入一个正整数,输出该数二进制表示中1的个数。编写一个函数实现上述要求,函数原型为:NumberOf1($n) $n为任意一个正整数如: $n = 10 NumberOf1($n) 返回 2 (表示10的二进制表示中包含2个1)提示: 10 的二进制表示为 1010 得到结果1的个数是 2public function index(){ $num = ...原创 2019-05-16 14:42:52 · 2862 阅读 · 0 评论 -
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public function index(){ $target = 7; $array=[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]; ...原创 2019-05-16 14:38:01 · 260 阅读 · 0 评论 -
求一个字符串中第一个只出现一次的字符,并返回它的位置
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)。public function index(){ $str = 'axabbccdxdeeffggX'; echo $this->FirstNotRepeatingChar($str); } function F...原创 2019-05-16 14:31:21 · 793 阅读 · 0 评论 -
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。public function index(){ $arr = []; for ($i=1;$i<=100;$i++){ $arr[] = $i; } $res = $this->FindNumbersWithSum($arr, 5...原创 2019-05-16 14:26:48 · 492 阅读 · 0 评论 -
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字的最小的一个
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 function index(){ $array = array(321, 3, 342); $len = count($array); for ($i = 1; $i < ...原创 2019-05-16 11:58:08 · 3053 阅读 · 0 评论 -
约瑟夫环: 圆圈中剩下最后的数
每年六一儿童节,周院长都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。每次周院长准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直到剩下最后一个小朋友,可...原创 2019-05-16 11:46:38 · 311 阅读 · 0 评论 -
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
PHP 求 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。public function index() { $n = 10 ;//台阶数 $one = 1 ; //一次一个台阶 $two = 2 ;//一次跳两个台阶 $sum = 0; if($n == 1) { return 1;die(); } ...原创 2019-05-16 10:48:05 · 1872 阅读 · 0 评论 -
PHP 在一个数组中实现一个函数来调整该数组中数字 奇数偶数 的顺序
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。如输入:[1,2,3,4,5,6]输出:[1,3,5,2,4,6]public function index() { $arr = ['1','2','3','4','5','6','7','8','...原创 2019-05-16 10:39:15 · 515 阅读 · 0 评论 -
php 1--100 之间 1的个数
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。希望大家帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。第一种方法public function ind...原创 2019-05-16 10:32:54 · 442 阅读 · 0 评论 -
PHP 青蛙跳台阶算法,每次可以跳1级或两级,请问有n级台阶有多少种算法
青蛙跳台阶算法,每次可以跳1级或两级,请问有n级台阶,有多少种算法,递归和非递归如何写假设,一级台阶,有f(1)种方法,二级有f(2)种,以此类推,n级有f(n)种方法。可以看出,f(1)=1;f(2)=2。那么,假设n级台阶,那么第一步就有两种情况,跳一步,跟跳两步。情况一:跳一步,那么接下去的就是f(n-1);情况二:跳两步,那么接下去的就是f(n-2)。所以总数...原创 2019-05-14 10:30:18 · 1098 阅读 · 0 评论 -
PHP 判断 丑数
丑数 把只包含质因子2,3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但7、14不是,因为它们包含质因子7。 习惯上我们把1当做是第一个丑数。前20个丑数为:1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, 36。判断方法首先除2,直到不能整除为止,然后除5到不能整除为止,然后除3...原创 2019-05-13 20:05:16 · 267 阅读 · 0 评论 -
PHP 实现斐波那契数列
斐波那契数列 ,又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)斐波那契数列指的是这样一...翻译 2019-05-13 19:37:59 · 3910 阅读 · 0 评论 -
php 判断 水仙花数
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。常见水仙花数水仙花数又称阿姆斯特朗数。...翻译 2019-05-13 19:27:48 · 2613 阅读 · 0 评论 -
PHP 1到100质数 (素数) 和
1到100质数$arr = array(); for ($i=2; $i<=100; $i++){ $str = false; for ($j=2; $i<=4 ? $j<$i : $j<=$i/2; $j++){ if ($i % $j == 0){ $str = false; ...原创 2019-05-12 20:42:59 · 10963 阅读 · 0 评论 -
经典算法
经典算法1、什么是时间空间复杂度:a) 时间复杂度:程序执行的时间随着输入数据的增大而增长的量级b) 空间复杂度:程序所占用的临时内存随着数据数据的增大而增长的量级2、编写一个程序,实现1+2+3+…+100的和;要求使用三种方式a) 方式1:i. 思路:创建一个变量,存储总和创建一个初始的值1;自增;加到100控制循环的次数,100次ii. 实现:b) 方式2:递归...原创 2019-05-10 11:36:41 · 474 阅读 · 0 评论