28、算法与数据结构 - 实战:卡特兰数、数组累加和问题、矩阵技巧
卡特兰数 假设k(0) = 1, k(1) = 1,满足下面三个公式的其中一个,都是卡特兰数,它们是等价的: 1、 k(n)=k(0)*k(n-1)+k(1)*k(n-2)+…+k(n-2)*k(1)+k(n-1)*k(0); 2、 k(n...
卡特兰数 假设k(0) = 1, k(1) = 1,满足下面三个公式的其中一个,都是卡特兰数,它们是等价的: 1、 k(n)=k(0)*k(n-1)+k(1)*k(n-2)+…+k(n-2)*k(1)+k(n-1)*k(0); 2、 k(n...
打表找规律 1、 某个面试题,输入参数简单,并且只有一个实际参数; 2、 要求的返回值类型也简单,并且只有一个; 3、 用暴力方法,把输入参数对应的返回值,打印出来看看,进而优化code; 题目一 小虎去买苹果,商店只提供两种类型的塑料袋,...
公众号:“皇子谈技术”主理人
有序表 存储key-value键值对 根据key进行排序,保证加入的元素在表中有序排列 二叉搜索数 二叉搜索树的特点 最简单的有序表 树状 每个节点的key都大于它的左子树的key 每个节点的key都大于它的右字树的key 二叉搜索树节点的...
资源限制技巧汇总 1、 布隆过滤器用于集合的建立与查询,并可以节省大量空间; 2、 一致性哈希解决数据服务器负载管理问题; 3、 利用并查集结构做岛问题的并行计算; 4、 哈希函数可以把数据按照种类均匀分流; 5、 位图解决某一范围上数字的...
常见的哈希函数 SHA-384 SHA-224 SHA-256 MD2 SHA SHA-512 MD5 哈希函数作用和特征 可以把数据根据不同的值,集合几乎均匀的分开 1、 输入域无穷大,输出域相对有限; 2、 相同的输入,一定导致相同的输...
IndexTree的作用 用于快速查询区间累加和 如果不用IndexTree,一般的做法是生成一个前缀和数组 比如原数组arr = [3, -2, 1, 5, 0] 那么前缀和数组help = [3, 1, 2, 7, 7] 如果此时要查3...
线段树的作用 以O(logN)的时间复杂度对数组区间进行增加、修改、查询 普通的数组操作是要O(N)复杂度的 原理就是把数组组织为一颗树,数的每个节点对应数组不同区间,增加、修改、查询在数的节点上进行 线段树实现细节 线段树流程代码 /**...
Morris遍历作用 Morris遍历是用于节省二叉树遍历的时候的空间的 如果是常规的二叉树遍历,不管是递归还是迭代实现的,空间复杂度都是O(M),M是树的高度,因为每一个节点都会回到它三次,遍历的先后序的不同就是在这三次中的哪一次访问这个...
给定一个整形数组,返回其中第K小的数 这一题的最优解就是改写快速排序 取一个基准数v,对数组做partition,大于v的放右边,小于k的放左边,等于v的放中间 然后看等于区域是否包含k这个位置 如果k这个位置在等于区域中间,那么返回v 否...
Manacher算法有什么用? Manacher算法,是一个用于快速寻找一个字符串中的最长回文子串的算法 回文就是一段文字,将它逆序之后,还是跟原来的一样,就是回文 而回文子串就是一个字符串中,连续的一段回文 比如在abc123321def...