最近在看redis方面的书籍,碰到了跳跃表这个数据结构。常规的单向链表在进行增删改查时,只能从头结点开始遍历,时间复杂度O(N),而跳跃表采用了二分法的思想,平均时间复杂度可以做到O(logN),最坏时间复杂度O(N)。另外,跳跃表是一种基于概率的数据结构(见下文添加元素操作)。 基本结构 下图是跳 ...
分类:
其他好文 时间:
2018-11-07 15:30:02
阅读次数:
211
1.最大子段和。 2.给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。 要求算法的时间复杂度为O(n)。 3. #include<iostream>using na ...
分类:
编程语言 时间:
2018-11-05 21:27:48
阅读次数:
221
列表查找(线性查找) 本质就是列表的index() 顺序查找 也叫线性查找,从列表第一个元素开始,顺序进行搜索,知道找到元素或搜索到列表最后一个元素为止。 以下是示例代码: 二分法查找(前提必须是一个有序的列表) 通过取中间值,选择候选区,如果中间值大于要查找的值,则证明候选区在左边,更改右边的最大 ...
分类:
编程语言 时间:
2018-11-04 00:25:26
阅读次数:
346
一、函数与方程思想(为什么要引入函数与方程思想?) 二、函数的零点 定义、易错 三、零点存在性定理 定义、易错, 四、求函数的零点的方法 ①解方程法; ②图像法; ③零点存在性定理; 五、二分法 定义、应用价值; ...
分类:
其他好文 时间:
2018-11-02 19:08:05
阅读次数:
134
1、 对动态规划算法的理解:动态规划就是将一个大问题变成一个个子问题再去解决,而每个子问题都是互相有联系的,不像二分法是独立存在的。而这些子问题都可以通过递归或者多重循环来解决,最终得出最终答案。无论是矩阵连乘问题,背包问题,还是我们实践中的三道实验题目,都是通过子问题来得出。我觉得三角形那个是最典 ...
分类:
编程语言 时间:
2018-11-02 14:34:47
阅读次数:
223
查重 (1)利用for循环需要45次 (2)利用对象不能有同一个属性 需要10次 冒泡排序 数组的去重 字符串的去重 统计字符串出现最多的次数 查找没有重复的字符串 深度拷贝 圣杯模式 insertAfter方法 查找数组里面最小的值 通过二分法查找(学习其中思想,不是为了解题) 题 代码 ...
分类:
其他好文 时间:
2018-11-01 15:08:10
阅读次数:
124
题目qwq (第一道蓝题) 据说是用了hash的思想(?) 总之是先把第一个序列每个数出现的顺序记下来(其实第一个序列的数字不用记), 然后第二个序列的每个数都对照它的顺序,这样只要得到一个升序的序列就行了qwq 如果遇到出现顺序在前面的数,就用二分法找一下它的位置,然后把原来存下来的顺序覆盖掉 # ...
分类:
其他好文 时间:
2018-10-27 01:30:51
阅读次数:
163