PHP 数据结构与算法

项目介绍

该项目致力于提高 PHP 工程师的算法基础,项目实用 PHP 定义了常用的数据结构的抽象数据类型(ADT),训练者只需实现其中的主要逻辑即可,项目集成了 PHPunit 单元测试包,以便测试。

项目目录结构如下

. ├── src │   ├── Algorithm # 算法 │   │   ├── Search # 搜索算法 │   │   └── Sort # 排序算法 │   └── Structure # 数据结构 │   ├── ADT # 抽象数据类型 │   ├── Heap # 堆 │   ├── LinkedList # 链表 │   ├── PriorityQueue # 优先队列 │   ├── Queue # 队列 │   ├── Stack # 栈 │   └── Tree # 树 └── tests # 测试用例

相关的接口实现后,在命令行用 phpunit 进行测试,如下测试排序算法

> vendor/bin/phpunit tests/SorterTest.php # 排序测试用例 > vendor/bin/phpunit tests/SearchTest.php # 线性查找测试用例 > vendor/bin/phpunit tests/PermutationTest.php # 测试数字全排列

Change Log

2019-08-06

添加一些数据结构

2019-05-01

添加一些 LeetCode 题目

2019-04-30

添加 LeetCode 搜索相关题目

2019-04-29

添加 LeetCode 一些题目

2019-04-19

添加《剑指Offer》No.11

2019-04-19

添加《剑指Offer》No.3 No.4 No.10

2019-04-09

完成 merge sort

2019-04-08

完成 HashMap

2019-03-26

完成 KMP

2019-03-25

完成全排列

2019-03-22

完成线性查找和二分查找迭代版

2019-03-21

完成选择序算法
完成插入序算法

2019-03-07

完成快速排序算法

数据结构

1. 线性表

链表

单链表 双链表 环形链表

链表实现 数组实现

队列

链表实现 数组实现 环形队列

2. 树

二叉树 二叉树 堆 最大堆 最小堆 优先队列 优先队列

3. 哈希表

哈希表

4. 图

DFS BFS

Disjoint Set 并查集

Trie

BloomFilter

LRU Cache

算法

General Coding

1. 线性查找

线性查找 二分查找

2. 查找树

3. 排序

插入排序 选择排序 桶排序 快速排序 归并排序

Greedy

Recursion/Backtrace

Dynamic Programming

LeetCode

链表

No.206 Reverse Linked List No.92 Reverse Linked List II (from Mth node to Nth node) No.160 Intersection of Two Linked Lists No.141 Linked List Cycle No.142 Linked List Cycle II No.86 Partition List No.138 Copy List with Random Pointer No.21 Merge Two Sorted Lists No.23 Merge k Sorted Lists

栈、队列 & 堆

No.225 Implement Stack using Queues No.232 Implement Queue using Stacks NO.155 Min Stack No.1363 Rails from por.org No.224 Basic Calculator No.215 Kth Largest Element in an Array No.295 Find Median from Data Stream

贪心

No.455 Assign Cookies No.376 Wiggle Subsequence No.402 Remove K Digits No.55 Jump Game No.45 Jump Game II No.425 Word Squares

递归、回溯

No.78 Subsets No.90 Subsets II No.40 Combination Sum II No.22 Generate Parentheses

二叉树与图

No.113 No.236 No.114 No.199

二分查找与二叉树排序

哈希表与字符串

No.409 Longest Palindrome No.290 Word Pattern No.49 Group Anagrams No.3 Longest Substring without Repeating charters No.187 Repeated DNA Sequence No.76 Minimum Window Substring

搜索

No.200 Number of Islands No.127 Word Ladder No.126 Word Ladder II

动态规划

《剑指 Offer》

No.3 数组中重复的数组 No.4 二维数组中的查找 No.10 Fibonacci 数列 No.11 旋转数组的最小数字

其他

数字全排列 KMP

版权声明:

1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。
2、网站不提供资料下载,如需下载请到原作者页面进行下载。
3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考学习用!
4、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。