题目要求:对归并排序进行修改,要求合并过程的空间复杂度为O(1)解题思路:假设a[beg, mid]和b[mid+1,end]是两段有序的子段,分别记做A和B,现要对其进行合并1) 首先对A进行搜索,找到比B[0]大的第一个位置,记录为i,即A[0~i-1] B[0];2) 对B进行搜索,找到大于....
分类:
编程语言 时间:
2016-01-26 00:25:12
阅读次数:
340
翻译给定一个单链表,将所有的奇节点归为一组,偶节点紧随其后。请注意我们现在谈的是奇节点而不是节点上的值。你应该尝试就地完成。程序应该在O(1)空间复杂度和O(nodes)时间复杂度下完成。例如:
给定 1->2->3->4->5->NULL,
返回 1->3->5->2->4->NULL。注释:
最后归类出来的奇节点和偶节点的相对位置应该和输入时一致。第一个节点为奇节点,第二个节点为偶节点,以此类推...
分类:
其他好文 时间:
2016-01-18 13:53:05
阅读次数:
218
关于C++,hanoi塔的递归问题一直是个经典问题,我们学习数据结构的时候也会时常用到,因为它的时间复杂度和空间复杂度都很高,我们在实际的应用中不推荐使用这种算法,移动n个盘子,需要2的n次幂减一步,例如:5个盘子,31步;10个盘子,1023步。 下面,是我整理的有关C++递归的代码实现过程...
分类:
编程语言 时间:
2016-01-13 12:57:02
阅读次数:
165
该题的大意是,给定一个整数数组,让我们返回一个新数组,对于新数组中每一个位置上的数,是原始数组其他位置上的数的乘积。题目限定了时间复杂度:O(n),而且对空间复杂度也有要求。...
分类:
其他好文 时间:
2016-01-11 06:51:07
阅读次数:
213
问题:给定一个无序数组,找出数组排序后的相邻元素最大间隔。要求 O(n) 时间复杂度,O(n)空间复杂度 解题思路: 思路一:将所有数组全部排序,再一次遍历求得最大的相邻元素间隔值即可。但是排序算法的最小时间复杂度也需要 O(n*logn) ,无法满足要求。 思路二:题目只需要求出最大相邻间隔...
分类:
其他好文 时间:
2016-01-10 01:40:27
阅读次数:
188
位运算可以大大减小算法空间复杂度,提高效率,很巧妙!先说一下位运算的简单用法1. 按位与 &用途:清零,取一个数中的某些指定位,保留一个数中的某些指定位2. 按位或 |用途:将一个数的某些位指定为13. 按位异或 ^用途:交换两个数a=a^b; b=a^b; a=a^b让我们看看这三条语句执行后的结...
分类:
其他好文 时间:
2016-01-08 11:41:47
阅读次数:
147
题目最大子数组差给定一个整数数组,找出两个不重叠的子数组A和B,使两个子数组和的差的绝对值|SUM(A) - SUM(B)|最大。返回这个最大的差值。样例给出数组[1, 2, -3, 1],返回 6注意子数组最少包含一个数挑战时间复杂度为O(n),空间复杂度为O(n)解题刚做了数组中两个子数组和的最...
分类:
编程语言 时间:
2016-01-06 23:29:58
阅读次数:
1243
题目第k大元素在数组中找到第k大的元素样例给出数组[9,3,2,4,8],第三大的元素是4给出数组[1,2,3,4,5],第一大的元素是5,第二大的元素是4,第三大的元素是3,以此类推注意你可以交换数组中的元素的位置挑战要求时间复杂度为O(n),空间复杂度为O(1)解题理论快速排序的思想,每次都减半...
分类:
其他好文 时间:
2016-01-03 23:58:50
阅读次数:
412
多数派问题()'''在O(n)时间复杂度,O(1)空间复杂度内,判断是否有候选人的得票数过半该算法在运行过程中,需要两个临时变量c和t,c记录当前可能得票数过半的候选人编号,t记录该候选人的净超出次数。对于c而言,除了可以等于1~m中的任何值之外,还有另一种状态,我们把其叫做未知状态,用于表示当前任...
分类:
其他好文 时间:
2016-01-03 07:36:25
阅读次数:
178
快速排序算法是对集合中元素进行排序最通用的算法,俗称快排,其算法的时间复杂度为O(nlgn),空间复杂度为O(1)。我们举例来对其算法思路进行理解,譬如数组 A = { 4, 8, 1, 2, 9, 7, 3, 0, 5, 6 };第一步,以最后一个数6为基准,把小于等于6的数挪到数组左边,把大于6...
分类:
编程语言 时间:
2016-01-01 09:23:12
阅读次数:
215