暴力递归就是尝试 1, 把问题转化为规模缩小了的同类问题的子问题 2, 有明确的不需要继续进行递归的条件(base case) 3, 有当得到了子问题的结果之后的决策过程 4, 不记录每一个子问题的解 一定要学会怎么去尝试,因为这是动态规划的基础,这一内容我们将在提升班讲述 汉诺塔问题 打印n层汉诺 ...
分类:
编程语言 时间:
2020-01-25 00:55:12
阅读次数:
106
观点1 我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。 比如,因为数组具有随机访问的特点,常用的二分查找算法需要用数组来存储数据。但如果 我们选择链表这种数据结构,二分查找算法就无法工作了,因为链表并不支持随机访问。 ...
分类:
编程语言 时间:
2020-01-24 21:16:44
阅读次数:
86
链表: 快慢指针:一个慢指针(一次走一步)一个快指针(一次走两步) 应用:判断链表是否有环,判断环的入口位置,求中位数,求倒数第k位等 判断链表是否有环:直接一快一慢去走,如果能碰到,那么说明有环,如果快指针走到NULL,那么无环 判断环入口位置:一快一慢走去,如果碰到了,那么将,慢指针放回入口,然 ...
分类:
编程语言 时间:
2020-01-23 18:22:22
阅读次数:
85
介绍前缀树 何为前缀树?如何生成前缀树? 例子:一个字符串类型的数组arrl,另一个字符串类型的数组arr2。arr2中有哪些字符,是arr 1中 出现的?请打印。arr2中有哪些字符,是作为arr 1中某个字符串前缀出现的?请打印。arr2 中有哪些字符,是作为arr1中某个字符串前缀出现的?请打 ...
分类:
编程语言 时间:
2020-01-23 16:44:51
阅读次数:
106
数的划分 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法。 输入:n,k ( 6 using namespace std; define rep(i,n) for ( ...
分类:
编程语言 时间:
2020-01-23 16:43:05
阅读次数:
75
实现一个短网址系统 短网址服务 把一个长的网址转化成一个短的网址,访问这个短网址,就相当于访问原始的网址 原始网址:https://github.com/wangzheng0822/ratelimiter4j 短网址:http://t.cn/EtR9QEG 上面第二个网址是通过新浪提供的短网址服务生 ...
分类:
编程语言 时间:
2020-01-20 21:15:50
阅读次数:
87
微服务鉴权限流剖析 微服务 把复杂的大应用,解耦拆分成几个小的应用。 有利于团队组织架构的拆分,毕竟团队越大协作的难度越大; 每个应用都可以独立运维,独立扩容,独立上线,各个应用之间互不影响。 有利就有弊: 大应用拆分成微服务之后,服务之间的调用关系变得更复杂,平台的整体复杂熵升高,出错的概率、de ...
分类:
编程语言 时间:
2020-01-20 20:59:57
阅读次数:
76
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的, ...
分类:
编程语言 时间:
2020-01-17 16:17:27
阅读次数:
80
实现一个小型搜索引擎 麻雀虽小,五脏俱全,跟大型搜索引擎相比,实现一个小型搜索引擎所用到的理论基础是相通的。 四个部分:搜集、分析、索引、查询 搜集 搜索引擎把整个互联网看作数据结构中的有向图,把每个页面看作一个顶点。 如果某个页面中包含另外一个页面的链接,那我们就在两个顶点之间连一条有向边。 可以 ...
分类:
编程语言 时间:
2020-01-17 13:16:51
阅读次数:
106
Redis常用数据类型对应的数据结构 Redis数据库 Redis 是一种键值(Key-Value)数据库。相对于关系型数据库(比如 MySQL),也被叫作非关系型数据库。 常用的数据类型: 字符串、列表、字典、集合、有序集合。 列表(list) 支持存储一组数据。两种实现方法: 压缩列表(zipl ...
分类:
编程语言 时间:
2020-01-16 17:20:27
阅读次数:
99