1.实现方式 首先我们需要一个数组a,存储从第1个到第n个导弹的高度 然后一个数组d(其实是个栈),存储不上升序列 把a中的每个元素挨个加到d里面: (a中第i个元素为a[i],d长度为len,d中最后一个(也是最小的一个)为d[len]) 如果a[i] <= d[len],说明a[i]可以接在d后 ...
分类:
其他好文 时间:
2020-07-26 15:56:51
阅读次数:
70
分析: 发现字符集大小只有8,时间限制是9s 对于每种字符$c$构建生成函数$f(x)=\sum_[S_i==c]xi$ 把$S_2$的生成函数翻转与$S_1$做卷积,得到的$[|S_2|-1,|S_1|-1]$的位置的值就是$S_1$中下标从$[0,|S1|-|S2|]$开始的字符相同数量 数据规 ...
分类:
其他好文 时间:
2020-07-26 00:41:52
阅读次数:
59
根据BST的前序遍历重建BST 1. 平均O(NlogN) 最坏O(N^2) class Solution { public: TreeNode* dfs(int l, int r, vector<int>& p) { if (l > r) return nullptr; TreeNode* nod ...
分类:
其他好文 时间:
2020-07-23 16:13:09
阅读次数:
67
1、最好情况、最坏情况、平均情况时间复杂度冒泡、插入都是O(n^2);快排、归并都是O(nlogn);桶、计数、基数都是O(n)2、排序算法的内存消耗原地排序算法:空间复杂度是 O(1) 的排序算法;冒泡排序,插入排序3、排序算法的稳定性稳定排序:如果待排序的序列中存在值相等的元素,经过排序之后,相 ...
分类:
编程语言 时间:
2020-07-22 01:58:40
阅读次数:
69
时间复杂度为O(nlogn)的排序算法---2020年7月21日 ...
分类:
编程语言 时间:
2020-07-21 23:15:07
阅读次数:
73
快速傅里叶变换,简称FFT,是一种可以O(nlogn)的时间内计算n次多项式乘法的算法。 写得很好的博客:自为风月马前卒大佬的博客。 大致步骤是: 1.先将两个多项式的系数表达法O(nlogn)都转化成点值表达法。 例如:y=A0+A1*x+A2*x2+A3*x3+...+An*xn可以转化为n+1 ...
分类:
其他好文 时间:
2020-07-19 23:42:47
阅读次数:
90
时间复杂度 顺序查找(O(n) 字面意思,代码略 ?二分查找(O(nlogn) 这个算法要求被搜索的数据结构已排序。以下是该算法遵循的步骤。 (1) 选择数组的中间值。 (2) 如果选中值是待搜索值,那么算法执行完毕(值找到了)。 (3) 如果待搜索值比选中值要小,则返回步骤1并在选中值左边的子数组 ...
分类:
编程语言 时间:
2020-07-13 21:59:09
阅读次数:
82
直接上图 主要就是要记住 二分查找,主要用于在有序的数组里面查找对应的元素,时间复杂度为 O(nlogn) 二叉树遍历,时间复杂度为 O(n) 有序的二维矩阵查找,时间复杂度为 O(n) 归并排序,时间复杂度为 O(nlogn) ...
分类:
编程语言 时间:
2020-07-11 23:00:49
阅读次数:
80
前言 在排序那一节里,讲到排序时,利用递推公式推导时间复杂度来求解归并排序、快速排序的时间复杂度,但有些情况,例如快速排序的平均时间复杂度,利用递推公式,会涉及很复杂的数据推导。今天学习一种特殊的树来分析递归算法的时间复杂度,那就是递归树。 递归树与时间复杂度 递归算法的思路是把大问题分成小问题来解 ...
分类:
编程语言 时间:
2020-07-10 10:10:47
阅读次数:
73
朴素版筛选质数 时间复杂度O(nlogn) int primes[N], cnt; // primes[]存储所有素数 bool st[N]; // st[x]存储x是否被筛掉 void get_primes(int n) { for (int i = 2; i <= n; i ++ ) { if ...