- 博客(9)
- 收藏
- 关注
原创 快速在数组中查找重复和遗失的元素
快速在数组中查找重复和遗失的元素问题 给定集合Z={x1,x2,...,xn}Z = \{ x_1, x_2, ..., x_n \}Z={x1,x2,...,xn}。集合内包含nnn个元素,每个元素都是数字。对于另一个集合AAA,它缺失了ZZZ中的一个元素,并重复了一个元素。 希望设计一个算法,找出重复和缺失的元素。空间复杂度O(1)O(1)O(1),时间复杂度O(n)O(n)O...
2019-02-11 23:45:25 525
原创 在元素重复三次的数组中查找只出现一次的元素
在元素重复三次的数组中查找只出现一次的元素问题 给定一个数组,它里面除了一个元素外,其他元素都重复了三次,要求空间复杂读为O(1)O(1)O(1),时间复杂度为O(n)O(n)O(n),查询只出现一次的元素。分析 不能进行排序查找,排序时间复杂度为O(nlogn)O(nlogn)O(nlogn),所以必须O(n)O(n)O(n)遍历数组得出结果。 我们考虑位运算。除了一个元素之外,...
2019-02-11 21:48:23 1046
原创 什么是B+Tree
什么是B+Tree序言 之前面试头条,被问起数据库的索引中B+Tree的特性,一无所知。现在参考网上博客,学习一下。基本概念 m阶:指的是B+树内一个节点的子节点数目的最大值不超过m。基本特征 1.有k个子树的中间节点包含k个元素,元素只用来索引,不存储数据。所有数据存放在叶子节点。 2.所有的叶子节点包含了全部元素的信息,以及指向包含这些元素记录的指针,且叶子节点本身依赖...
2019-02-11 00:38:36 1988
原创 矩阵快速幂求解斐波那契系列问题
矩阵快速幂求解斐波那契问题问题 求解斐波那契数列第NNN项分析 对于求第NNN项的值,可通过矩阵快速幂将时间复杂度降至O(logN)O(logN)O(logN)。递归式F(N)=F(N−1)+F(N−2)F(N)=F(N-1)+F(N-2)F(N)=F(N−1)+F(N−2),是一个二阶的递推数列,可用矩阵乘法表示,且状态矩阵为2×22\times 22×2的矩阵:(F(n),...
2019-02-10 20:08:38 3143
原创 数据库-索引知识汇总
数据库-索引知识汇总 + mysql索引语法什么是索引 索引是关系型数据库中给数据库表中一列或多列的值排序后的存储结构,主要使用了B+tree和Hash结构。分类 聚集索引:数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同,一个表中只能有一个聚集索引。聚集索引可以根据查询要求,迅速缩小查询范围,避免全表扫描。 非聚集索引:该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同...
2019-02-10 15:37:14 352
原创 两个单链表相交的一系列问题
两个单链表相交的一系列问题要求 单链表可能有环,可能无环头节点 head1 和 head2, 这两个链表可能相交,也可能不相交。请实现一个函数, 如果两个链表相交, 请返回相交的第一个节点; 如果不相交, 返回 null 即可。 如果链表1的长度为NNN,链表2的长度为MMM,时间复杂度请达到O(N+M)O(N+M)O(N+M),额外的空间复杂度请达到O(1)O(1)O(1)。解答...
2019-02-09 20:47:21 360
原创 如何判断两个有环链表是否相交
如何判断两个有环链表是否相交问题 如何判断两个有环链表是否相交,相交则返回第一个相交节点,不相交则返回null。思路 我们已经得到了两个链表各自的第一个入环节点,假设链表1的第一个入环节点为loop1,链表2的第一个入环节点为loop2。具体如下: 1.如果loop1 == loop2,拓扑结构如图: 该情况下,考虑链表1从头开始到loop1这一段与链表2从头开始到loop2...
2019-02-09 20:39:58 1933
原创 如何判断两个无环链表是否相交
如何判断两个无环链表是否相交问题 如何判断两个无环链表是否相交,相交则返回第一个相交节点,不相交返回null。思路 如果两个无环链表相交,那么从相交节点开始,一直到两个链表终止的这段,二者共享。具体如下: 1.链表1从头节点开始,走到最后一个节点,统计链表1的长度记为len1,同时记录链表1的最后一个节点记为end1。 2.链表2从头节点开始,走到最后一个节点,统计链表2的长度...
2019-02-09 20:14:13 912
原创 如何判断一个链表是否有环
如何判断一个链表是否有环问题陈述 如何判断一个链表是否有环,如果有,则返回第一个进入环的节点,没有则返回null。思路 如果一个链表无环,那么遍历链表一定可以遇到链表的终点;如果链表有环,那么遍历链表就永远在环内转下去。具体如下: 1.设置快慢指针分别为fast和slow。开始,slow和fast都指向链表的头节点head。然后slow每次移动一步,fast每次移动两部,在链表中遍...
2019-02-09 19:58:10 1814
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人