由于在某些糟糕情况下,二叉查找树会退化成链,故而朴素建树过程其复杂度可能会退化成$O(n^2)$。 采用倒序连边建树的方法可以使得二叉查找树建树复杂度稳定在$O(nlogn)$. 具体思路如下: 把待建树的序列$a_1,a_2,a_3,a_4..a_n$$排序,对于每一个$$a_i$求得其在排序后的 ...
分类:
其他好文 时间:
2019-10-06 22:10:35
阅读次数:
218
题目链接: "Kattis largesttriangle" Description Given $N$ points on a $2$ dimensional space, determine the area of the largest triangle that can be formed ...
分类:
其他好文 时间:
2019-10-06 00:52:11
阅读次数:
345
最长上升子序列LIS $\Theta(n^2)$ $f_i=max(f_j+1),j<i,a_j<a_i$ $\Theta(nlogn)$ 限制条件二维偏序,bit优化 最长公共子序列LCS $\Theta(n^2)$ $f_{i,j}=max(f_{i-1,j},f_{i,j-1},[a_i==b ...
分类:
其他好文 时间:
2019-10-05 18:04:49
阅读次数:
79
T1: 翻转区间相当于位移,但是边界附近的点要特判。 可以处理出最左侧和最右侧的对称轴,然后分类讨论每个数的位置,即可知道他能移动到的区间。 用set进行bfs即可,相同的点不会被遍历两次。 也可以线段树优化建边,注意优化建边跑双端队列bfs一定要把出边的权值设为1。 时间复杂度$O(nlogn)$ ...
分类:
其他好文 时间:
2019-10-05 16:48:21
阅读次数:
82
原题链接在这里:https://leetcode.com/problems/reverse-pairs/ 题目: Given an array nums, we call (i, j) an important reverse pair if i < j and nums[i] > 2*nums[j ...
分类:
其他好文 时间:
2019-10-05 10:29:35
阅读次数:
80
合归并排序需要 ,先排序,再 合并。复杂度为O(nlogn);空间复杂度为O(N)。需要额外的数组,保存复制已排序的数组到原数组中。 ...
分类:
编程语言 时间:
2019-10-03 18:10:52
阅读次数:
90
题目描述: 方法一:双指针 O(N) 方法二: 二分 O(NlogN)* ...
分类:
编程语言 时间:
2019-10-03 12:48:48
阅读次数:
103
最长不下降子序列实现: 利用序列的单调性。 对于任意一个单调序列,如 1 2 3 4 5(是单增的),若这时向序列尾部增添一个数 x,我们只会在意 x 和 5 的大小,若 x>5,增添成功,反之则失败。由于普通代码是从头开始比较,而 x 和 1,2,3,4 的大小比较是没有用处的,这种操作只会造成时 ...
分类:
其他好文 时间:
2019-09-29 19:37:50
阅读次数:
56
快排的时间复杂度O(nlogn)-O(N^2),空间复杂度为O(long2n)-O(N) 传统的快排与优化的快排的优化之处在于,传统的左边每次都保存着小于等于target即x的数值,包含着x,下次对左边的再次进行快排,还是要比较x, 优化的把 等于x放在中间,减少了重复元素的比较次数。 当origi ...
分类:
编程语言 时间:
2019-09-29 11:18:31
阅读次数:
101
T1平均数: 其实挺简单的,因为要求第K小平均数; 肯定得批量处理;于是考虑一种有效的方法,下意识线段树维护,区间查询,平衡书查询............ 但都不是,二分答案(二分平均数)把每个序列上的值都减去一个数,这样平均数就会整体减去一个数,那么比我小得就是区间和小于0的,然后求出前缀和,利用 ...
分类:
其他好文 时间:
2019-09-27 15:08:15
阅读次数:
83