▼ 算法
YY-帆S
萌新
展开
-
斐波那契数列的各种优化:尾递归(递归不爆栈),记忆化搜索,动态规划
目录1.普通的递归斐波那契数列2.尾递归:在使用递归的情况下,不爆栈3.记忆化搜索:减少不必要的重复计算,自上而下4.动态规划:自上而下,非递归1.普通的递归斐波那契数列function fac($n){ if($n == 1 || $n == 2) return 1; else return fac($n-2) + fac($n-1)}2.尾递归...原创 2019-01-24 16:38:24 · 3948 阅读 · 0 评论 -
PHP求最大公约数 && 最小公倍数 && 质数
文章目录1.最大公约数(1)更相减损法(2)辗转相除法2.最大公约数(1)穷举(2)公式法3.质数(1)是否是质数(2)求范围内的质数(如2-200)1.最大公约数greatest common divisor(1)更相减损法大减小,一直减,减到出现相同的数,即为最小公倍数BUG:不能求负数的最大公约数function gcd($a,$b){ while ($a != $b) ...原创 2019-01-25 18:07:05 · 1855 阅读 · 0 评论 -
【PHP解法==LeetCode链表类型】构建PHP单链表测试用例
LeetCode上的单链表问题无法直接在本地进行测试直接在线上测试有会比较麻烦,因此可以自己构建一个单链表的测试类,用于完整的创建一条单链表代码执行结果******** 测试Insert ********head -> a -> b -> c -> d -> e -> f -&g原创 2019-01-30 00:05:49 · 186 阅读 · 0 评论 -
PHP实现各类排序算法
文章目录1.冒泡排序2.简单选择排序3.直接插入排序4.希尔排序5.堆排序6.归并排序7.快速排序排序方法平均情况最好情况最坏情况辅助空间稳定性冒泡排序O(n²)O(n)O(n²)O(1)稳定简单选择排序O(n²)O(n²)O(n²)O(1)稳定直接插入排序O(n²)O(n)O(n²)O(1)稳定希尔排序O(nlogn...原创 2019-02-03 22:34:37 · 356 阅读 · 0 评论 -
【PHP解法==LeetCode94.144.145】二叉树的前中后序递归与非递归PHP解法
文章目录1.递归(1)前序遍历(2)中序遍历(3)后序遍历2.非递归(根据节点的访问顺序)(1)前序遍历(2)中序遍历(3)后序遍历3.非递归(利用堆栈模拟递归过程)(1)前序遍历(2)中序遍历(3)后序遍历1.递归(1)前序遍历LeetCode 144题.二叉树的前序遍历前序遍历:打印节点->左结点->右结点class Solution { public $res ...原创 2019-02-08 23:06:23 · 192 阅读 · 0 评论 -
动态规划-经典问题(0-1背包问题)分析及优化
目录1.0-1背包问题的分析(1)状态方程2.递归算法3.记忆化搜索4.动态规划5.优化1——空间复杂度O(2C)6.优化2——空间复杂度O(C)7.0-1背包问题的变种如上图是一个LeetCode的经典问题,0-1背包问题1.0-1背包问题的分析尝试下面的算法暴力解法:每一件物品都可以放进背包,也可以不放进背包,时间复杂度为O((2^n)...原创 2019-03-05 13:49:01 · 11312 阅读 · 0 评论 -
PHP根据数组创建二叉树
根据数组创建二叉树<?php/** * 树节点结构类 */class TreeNode{ public $val = null; public $left = null; public $right = null; function __construct($value) { $this->val = $value;...原创 2019-04-05 11:52:14 · 636 阅读 · 0 评论