一.总述 分治算法其实就是将一个大问题分解为若干个类型相同但是规模较小的子问题,使用递归的方式一直分解下去,然后将子问题的解合并得到原问题的解的策略。 二.经典的分治算法列举 二分搜索、大整数乘法、strassen矩阵乘法、棋盘覆盖、合并排序、快速排序、线性时间选择、最接近点对问题、循环赛日程表、汉 ...
分类:
编程语言 时间:
2021-02-17 14:56:19
阅读次数:
0
LSM(Log-Structured MergeTree) 树 LSM树核心思想是放弃部分读能力,换取写入的最大化能力。LSM 树的核心思路其实非常简单,就是假定内存足够大,因此不需要每次有数据更新就必须将数据写入到磁盘中,而可以先将最新的数据驻留在内存中,等到积累到足够多之后,再使用归并排序的方式 ...
分类:
其他好文 时间:
2020-10-16 11:14:04
阅读次数:
23
原题链接 题解 方式一:利用额外的空间 开一个额外的空间存放数据,最后再放回去 代码如下 class Solution { public: void merge(vector<int>& A, int m, vector<int>& B, int n) { int i = 0, j = 0; int ...
分类:
编程语言 时间:
2020-07-19 16:28:00
阅读次数:
60
知识图 我绝对不会告诉你这是我盗来的 基础算法 CDQ 分治 思想:离线,对序列进行分治。在回溯合并的时候,考虑分治左侧对右侧的贡献。可保证两维有序,再高维的就需要用数据结构维护。 实现:类似于归并排序。注意计算贡献部分和排序部分可能需要分开。 线段树分治 思想:离线,对询问建立线段树,然后把修改挂 ...
分类:
其他好文 时间:
2020-06-16 13:21:24
阅读次数:
66
题目: 解答: 1 class Solution { 2 public: 3 void merge(vector<int>& A, int m, vector<int>& B, int n) 4 { 5 int len1 = m - 1; 6 int len2 = n - 1; 7 int len ...
分类:
编程语言 时间:
2020-05-05 20:13:16
阅读次数:
67
理解参照 网站 https://blog.csdn.net/li528405176/article/details/86615003 代码参考网址 https://blog.csdn.net/feierxiaoyezi/article/details/79998060?depth_1-utm_sou ...
分类:
编程语言 时间:
2020-04-21 11:19:07
阅读次数:
64
描述 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。 初始化?A 和 B 的元素数量分别为?m 和 n。 示例: 输入: A = [1,2,3,0,0,0], m = 3 B = [2,5,6], n = 3 输出:?[1,2 ...
分类:
编程语言 时间:
2020-04-16 00:50:22
阅读次数:
70
SQL:structure query language SQL操作的对象是二维表,每一行是一个元组。通过逻辑判断和集合操作来取数。 数据的增删查改,合并排序都应该有对应的语法来实现 个人感觉,这种操作二维表的行为都差不多。比如Excel操作的也是二维表,生成透视表的过程,就是不断增加条件筛选数据的 ...
分类:
数据库 时间:
2020-03-04 21:17:46
阅读次数:
102
题目: 这道题有多种实现的思路,这里使用双指针结合数组有序的特点进行解决 思路: m代表A初始时有效元素的个数,n代表B中元素的个数,那么n+m才是A的总长度 从A的最后一个位置开始,设为cur,分别从A和B有效元素中选取最大的一个,进行比较,将较大的放入cur,随之相应的cur--,较大元素所在数 ...
分类:
编程语言 时间:
2020-03-03 13:08:33
阅读次数:
78
输入若已经是排好序的,下列排序算法最快的是() A. 插入排序 B. Shell排序 C. 合并排序 D. 快速排序 解析:若已排好序,使用插入排序的时候只要两两比较一次即可,复杂度为O(n)。 答案:A 拓扑排序是按 AOE 网中每个结点事件的最早发生时间对结点进行排序,这样的说法正确吗? A. ...
分类:
编程语言 时间:
2020-02-27 00:56:42
阅读次数:
80