看看有几重for循环,只有一重则时间复杂度为O(n),二重则为O(n^2),依此类推,如果有二分则为O(logn),如二分查找,如果一个for循环套一个二分,那么时间复杂度则为O(nlogn)。 常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n...
分类:
其他好文 时间:
2014-07-19 21:11:57
阅读次数:
148
题意:
猴子们打架 认识的猴子不会打架 两只猴子打完以后就认识了 A认识B B认识C A也认识C 每次打架由两伙猴子进行 分别选出自己的最高战斗力 在战斗之后两只猴子战斗力减半 给出m次打架 输出打架后这一伙猴子里的最强战斗力
思路:
判断两只猴子是不是一伙的 用到并查集
快速找出一伙猴子中的最强战斗力用到堆 但打完架两伙猴子合并时堆需要nlogn复杂度 因此用左偏树代替堆...
分类:
其他好文 时间:
2014-07-18 22:37:45
阅读次数:
235
题目来源,待字闺中,原创@陈利人
,欢迎大家继续关注微信公众账号“待字闺中”
原题
给定一批查询日志,数量为n。其中,有的查询出现了多于n/3次,请在线性时间内,找到所有满足条件的查询。
分析
如果初次遇到这个问题,我们会有什么样的思路呢?
采用hashmap进行计数,O(n)的空间,O(n)的时间进行排序,O(nlogn)快速选择算法,这个也可以做到O(n)...
分类:
其他好文 时间:
2014-07-18 22:18:42
阅读次数:
279
题目来源,待字闺中,原创@陈利人 ,欢迎大家继续关注微信公众账号“待字闺中”
排序只有1,2,3三个元素的数组,不能统计1,2,3的个数。
分析:这个题目,尽管也是排序,但却不能使用快速排序的方法。只有三个元素,如果时间复杂度仍旧是O(nlogn),显然不是最好的。那就可以使用线性的排序算法,例如计数排序,可是题目中要求,不能够对1,2,3进行统计个数。那该如何处理呢?请大家看下...
分类:
其他好文 时间:
2014-07-17 19:34:43
阅读次数:
291
这题的考察点 应该有2个一个是对于LIS算法的优化 使用进行二分查找的O(nlogn)算法 而不是 O(n^2)另一个就是 对于题意的理解... 并不是可以很直观地联系到 最长上升子序列的...你可以自己画图 就很直观了.. touch me另外一个很坑的地方 就是 road || ...
分类:
其他好文 时间:
2014-07-16 17:55:22
阅读次数:
182
这个题目很常见,方法也很多,这里总结了编程之美给出的几个比较好的方法,也算是对这个问题的一个总结。
方法一、partition算法,每次partition的复杂度为O(n),总的平均时间复杂度为O(nlogn)
分析:运用partition算法,如果返回的provit > k-1,则说明要找的数都在前面,把end= provit-1;如果provit
int partition(vecto...
分类:
其他好文 时间:
2014-07-16 17:31:54
阅读次数:
290
(1)最长递增子序列问题有两种方法:(1)动态规划方法(2)类似二分查找的方法O(nlogn)动态规划方法: 以i结尾的序列的最长递增子序列和其[0, i - 1]“前缀”的最长递增子序列有关,设LIS[i]保存以i结尾的最长递增子序列的长度:若i = 0,则LIS[i] = 1; 若i > 0,....
分类:
其他好文 时间:
2014-07-14 22:05:35
阅读次数:
474
Sort a linked list inO(nlogn) time using constant space complexity.题解:实现一个链表的归并排序即可。主要分为三部分:1.找到中点并返回的函数findMiddle;2.归并函数merge;3.排序函数sortList。数组的findM...
分类:
其他好文 时间:
2014-07-14 20:00:56
阅读次数:
182
算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地....
分类:
其他好文 时间:
2014-07-14 15:56:17
阅读次数:
227
重新学习一遍,看到了这个问题:
描述一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数 X 时,判断出S中是否存在有两个其和刚好等于 X 的元素。
Solution:
(1)->对整个集合进行排序,可以用快排(含有小文件策略、三者取中策略),时间复杂度O(nlogn),形成一个数组A[n]。
->设定两个下标pBegin和pEnd,分别指向数组...
分类:
其他好文 时间:
2014-07-13 15:46:55
阅读次数:
197