对于单链表来说,判断回文最简单的方法就是遍历链表,将链表中的元素复制到数组中,然后对数组进行判断是否是回文数组,但是这不符合O(1)的空间复杂度。 由于空间复杂度的要求,需要就地操作链表,不能开辟多余的空间来进行处理,因此引入快慢指针来进行操作。 快慢指针: slow 和 fast,每次 ...
题目描述: 如何对n个数进行排序,要求时间复杂度O n ,空间复杂度O 解析: 利用计数排序法,设置一大小为 的int数组,范围a a ,并初始为 ,然后遍历n个数,假设这n个数在数组array ...n 中,则i取值从 到n 同时执行a array i ,最后再依照顺序读数组a,遇到不为 时,将对应的下标读回数组array,计数是几次就读几次,覆盖原有数,这样得出的array即为排序所求 因为空 ...
2012-09-20 10:09 0 3253 推荐指数:
对于单链表来说,判断回文最简单的方法就是遍历链表,将链表中的元素复制到数组中,然后对数组进行判断是否是回文数组,但是这不符合O(1)的空间复杂度。 由于空间复杂度的要求,需要就地操作链表,不能开辟多余的空间来进行处理,因此引入快慢指针来进行操作。 快慢指针: slow 和 fast,每次 ...
转自:http://blog.csdn.net/vast_sea/article/details/8167968 看上去似乎任何已知的算法都无法做到,如果谁做到了,那么所有的排序方法:QuickSort,ShellSort,HeapSort,BubbleSort等等等等,都可以扔掉了,还要 ...
题目:如何对n个不重复出现的整数序列进行排序,已知这些数的范围为(0-65535),要求时间复杂度O(n),空间复杂度O(1) 分析: 可以申请一个大小为65536的数组A,数组的x下标代表数字x,A[x]代表x 在整数序列中出现的次数。扫描一遍整数序列就可以完成对该整数序列的排序,时间复杂度 ...
算法实现:自底向上的归并排序 ...
(1)、把输入规模看成x轴,所花时间/空间看成y轴 O(n)就是y=x,y随x的增长而线性增长。也就是成正比,一条斜线。 O(1)就是y=1,是一个常量,不管x怎么变,y不变,一条与x轴平行的线。 (2)、举个简单的例子,要从0加到n,我们会这么写: int sum ...
场景也非常有限。 因此,一般上我们讨论一个算法的优劣的时候可以通过时间和空间两个维度来衡量,也就是常说 ...
时间复杂度 算法分析 同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。 一、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知 ...