子序列自动机 (Subsequence Automaton) 时隔两个月回来学自动机. 子序列自动机可以在线性时间识别一个字符串 \(a\) 是否是 \(s\) 的子序列. 首先考虑 \(s\) 没有重复字符的情况, 那么 \(s\) 的子序列就是 \(2^{Len_s}\) 种, 分别是每个字符选 ...
分类:
其他好文 时间:
2021-06-16 17:45:38
阅读次数:
0
排序 分类 外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行(k路归并) 内排序:所有操作再内存就可以完成 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的 ...
分类:
编程语言 时间:
2021-06-08 22:35:45
阅读次数:
0
简单题: 只出现过一次数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1]输出: 1示例 2: 输入: [4,1,2,1,2]输出: ...
分类:
其他好文 时间:
2021-05-24 08:14:02
阅读次数:
0
题目 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。 说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,3,2] 输出: 3 示例 2: 输入: [0,1,0,1,0,1,99] 输出: 9 ...
分类:
其他好文 时间:
2021-04-07 11:11:06
阅读次数:
0
一.总述 分治算法其实就是将一个大问题分解为若干个类型相同但是规模较小的子问题,使用递归的方式一直分解下去,然后将子问题的解合并得到原问题的解的策略。 二.经典的分治算法列举 二分搜索、大整数乘法、strassen矩阵乘法、棋盘覆盖、合并排序、快速排序、线性时间选择、最接近点对问题、循环赛日程表、汉 ...
分类:
编程语言 时间:
2021-02-17 14:56:19
阅读次数:
0
概述 参考资料: 刘雅琼PPT讲解kuangbin的博客 给出模板串A和子串B,长度分别为lenAlenA和lenBlenB,要求在线性时间内,对于每个A[i]A[i](0<=i<lenA)(0<=i<lenA) 求出A[i..lenA?1]A[i..lenA?1] 与B的最长公共前缀长度,记为ex ...
分类:
其他好文 时间:
2021-01-21 10:42:14
阅读次数:
0
标签 稳定排序、非原地排序、比较排序 基本思想 归并排序属于比较类非线性时间排序,号称比较类排序中性能最佳者,在数据中应用中较广。 归并排序是分治法(Divide and Conquer)的一个典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有 ...
分类:
编程语言 时间:
2020-12-14 13:39:09
阅读次数:
5
Linear Time: O(n) Linear time. Running time is proportional to input size. (线性时间: 运行时间与输入大小成正比) <1>Computing the maximum. Compute maximum of n numbers ...
分类:
其他好文 时间:
2020-11-19 12:24:55
阅读次数:
4
Leetcode(easy Bit) leetcode位运算的简单的题目总结 136 只出现一次的数字 题目:给定一个非空整数数组,除了某一个元素只出现一次之外,其余每个元素均出现了两次,找出那个只出现一次的元素。 说明:你的算法应该具有线性时间复杂度,而且尽量不使用额外空间 解题思路:用到了位运算 ...
分类:
其他好文 时间:
2020-11-04 19:20:25
阅读次数:
49
题目要求只能用常数空间和线性时间完成这个任务,因此需要用一个比较取巧的做法。 在没有空间限制的情况下,我们会想到对每个值做一个映射,比如用一个哈希表计算每个数出现的次数。但是由于此题对空间进行了限制, 因此我们只能在原数组上进行“映射”,再由观察发现,每个数的值都是1~n内的整数,正好可以将值映射到 ...
分类:
编程语言 时间:
2020-10-31 01:07:50
阅读次数:
21