一个数组的算法问题
鉴于算法版人气不旺, 把C++版的一个算法问题转过来,看看有没有好的解决办法
原帖地址:
http://topic.csdn.net/u/20100623/09/dd25166f-bac4-4b2d-98ab-71cab69f4241.html?54216
问题描述:一个长度为2n的(整型)数组元素为 a1 a2 ... an b1 b2 ... bn
要求: 用O(1)的空间代价, 在O(n)时间内把数组变成 a1 b1 a2 b2 a3 b3 ... an bn
该贴中给出的方法很巧妙,但是还是没有满足O(1)空间的限制,或者是对数组的元素有限制才做到(相当于做hash之类的操作把原数组的数据给变换了)。如果数据不是整型的,而是任意的对象,就做不了了。
现在问: 有没有一种方法,可以只通过移动元素,来达到时间O(n) 空间(1)的要求?
原帖地址:
http://topic.csdn.net/u/20100623/09/dd25166f-bac4-4b2d-98ab-71cab69f4241.html?54216
问题描述:一个长度为2n的(整型)数组元素为 a1 a2 ... an b1 b2 ... bn
要求: 用O(1)的空间代价, 在O(n)时间内把数组变成 a1 b1 a2 b2 a3 b3 ... an bn
该贴中给出的方法很巧妙,但是还是没有满足O(1)空间的限制,或者是对数组的元素有限制才做到(相当于做hash之类的操作把原数组的数据给变换了)。如果数据不是整型的,而是任意的对象,就做不了了。
现在问: 有没有一种方法,可以只通过移动元素,来达到时间O(n) 空间(1)的要求?
...全文
相关推荐
一个专注于LeetCode算法题解与Java编程实践的开源学习项目_包含合并两个有序数组和移除元素等经典算法问题的多种解法详解与代码实现_从暴力冒泡排序到高效双指针技巧的逐步优化过.zip
一个专注于LeetCode算法题解与Java编程实践的开源学习项目_包含合并两个有序数组和移除元素等经典算法问题的多种解法详解与代码实现_从暴力冒泡排序到高效双指针技巧的逐步优化过.zip
算法实习:分治算法求n个数的数组中找出第二个最大元素
分治算法求n个数的数组中找出第二个最大元素
分而治之法求一个数组最大子集
分而治之的思想解决求一个数组的最大子集,有效的降低了时间复杂度,值得学习。
将两个有序数组,合并成另一个有序的数组,升序
将两个有序数组,合并成另一个有序的数组,升序。将两个有序数组,合并成另一个有序的数组,升序。将两个有序数组,合并成另一个有序的数组,升序
分治算法-求一个数组中的最大值和最小值
分治思想:将难以直接求解的大问题分解为k个相同的子问题;对这k个子问题分别求解。如果子问题的规模仍然不够小,则再划分为k个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止;


