极客时间算法训练营2020版

Go 算法练习

预习

第1课 | 数据结构与算法总览,第2课 | 训练准备和复杂度分析

第1周 数组、链表、跳表

第3课|数组、链表、跳表

第2周 栈、队列、哈希表

第4课 | 栈、队列、优先队列、双端队列,第5课 | 哈希表、映射、集合

阅读更多

PHP算法练习

预习

预习 第一课 预习 第二课 预习知识点 数组:为什么很多编程语言中数组都从 0 开始编号? 链表:如何实现 LRU 缓存淘汰算法? 链表:如何轻松写出正确的链表代码? 跳表:为什么 Redis 一定要用跳表来实现有序集合? 预习题目 移动零 盛最多水的容器 爬楼梯 三数之和 环形链表

第1周

第一周 第三课|数组、链表、跳表 参考链接 Java 源码分析(ArrayList) Linked List 的标准实现代码 [Linked List 示例代码](http://www.cs.cmu.edu/~adamchik/15-121/lectures/Linked Lists/code/LinkedList.java) Java 源码分析(LinkedList) LRU Cache - Linked list: LRU 缓存机制 Redis - Skip List:跳跃表 、为啥 Redis 使用跳表(Skip List)而不是使用 Red-Black? Array 实战题目 11. 盛最多水的容器 //方法一: 暴力求解 双循环 class Solution { /** * @param Integer[] $height * @return Integer */ function maxArea($height) { $max = 0; $len = count($height); for ($i = 0; $i < $len - 1; $i++) { for ($j = $i + 1; $j < $len; $j++) { $area = ($j - $i) * min($height[$i], $height[$j]); $max = $area < $max ?

第2周

第2周 第4课 | 栈、队列、优先队列、双端队列 参考链接 Java 的 PriorityQueue 文档 Java 的 Stack 源码 Java 的 Queue 源码 Python 的 heapq 高性能的 container 库 预习题目 20. 有效的括号 class Solution { /** * 方法一:栈(spl标准库) * @param String $s * @return Boolean */ function isValid($s) { //构造哈希表 $map = [')'=>'(', ']'=>'[', '}'=>'{']; $stack = new SplStack(); for ($i = 0, $len = strlen($s); $i < $len; $i++) { if (!isset($map[$s[$i]])) { $stack->push($s[$i]); } else if (!$stack->count() || $stack->pop() !

阅读更多