
数据结构方法
AcceptedLin
ACC
展开
-
HashTable && HashMap
HashTable && HashMapHashTable:散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙。时间复杂度为O(1)。散列表(Hash table,也叫哈希表),是根据关键码值(Key va...转载 2018-07-23 15:14:56 · 232 阅读 · 0 评论 -
DP之0-1背包问题
DP之0-1背包问题0-1背包问题是指每一种物品都只有一件,可以选择放或者不放。现在假设有N件物品,背包承重为M。对于这种问题,我们可以采用一个二维数组去解决:f[i][j],其中i代表加入背包的是前i件物品,j表示背包的承重,f[i][j]表示当前状态下能放进背包里面的物品的最大总价值。那么,f[N][M]就是我们的最终结果...原创 2018-08-29 20:15:28 · 540 阅读 · 0 评论 -
稀疏矩阵相乘-Python版
稀疏矩阵相乘-Python版Given two sparse matrices A and B, return the result of AB.You may assume that A's column number is equal to B's row number.Example:A = [ ...原创 2018-09-02 15:26:59 · 4230 阅读 · 0 评论 -
KMP算法-Python版
KMP算法-Python版传统法:从左到右一个个匹配,如果这个过程中有某个字符不匹配,就跳回去,将模式串向右移动一位。这有什么难的?我们可以这样初始化:之后我们只需要比较i指针指向的字符和j指针指向的字符是否一致。如果一致就都向后移动,如果不一致,如下图:A和E不相等,那就把i指针移回第1位(假设下标从0开始),j移...原创 2018-09-02 17:17:21 · 486 阅读 · 0 评论 -
递归算法时间复杂度分析
递归算法时间复杂度分析时间复杂度:一般情况下,算法中基本操作重复的次数就是问题规模n的某个函数f(n),进而分析f(n)随n的变化情况并确定T(n)的数量级。这里用‘o’来表示数量级,给出算法时间复杂度。T(n)=o(f(n));它表示随问题规模n的增大,算法的执行时间增长率和f(n)增长率成正比,这称作算法的渐进时间复杂度...转载 2018-09-17 16:16:59 · 107592 阅读 · 5 评论 -
动态规划题解
动态规划题解递归和动态规划都是将原问题拆成多个子问题然后求解,他们之间最本质的区别是,动态规划保存了子问题的解,避免重复计算。基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些...原创 2018-09-21 19:52:23 · 766 阅读 · 0 评论