摘要:
重复题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。此题最初载于http://blog.csdn.net/v_JULY_v/article/details/6444021我在文章中也对其做了总结,并对线性时间的算法做了自己的证明,这里重复如下(其实后面的递归式本身就证明了算法的正确性,这里只是希望通过暴力的方法尝试对从另一个方面对它进行证明,即穷举所有可能出现情况):“关于这道题的证明,我的思路是去证明这样的扫描法包含了所有n^2种情况,即所有未显示列出的子数组都可以在本题的扫描过 阅读全文
posted @ 2012-04-10 20:15
waytofall
阅读(2276)
评论(10)
推荐(1)
摘要:
关于堆的描述可以参考:http://www.cs.auckland.ac.nz/~jmor159/PLDS210/heaps.html我的实现没有用二叉树,而是用数组。上文提到,由于堆是一种complete树(complete,和完全树略有区别),即子节点的上层是完全树,而子节点从左向右严格排列,这种数据结构可以用数组很好模拟。从第一层第一个节点为1开始,从左到右从上到下依次存储。则,对于某个索引为i的节点,其左子节点和右子节点的索引分别为:i * 2, i * 2 + 1C++代码:#include <iostream>using namespace std;template&l 阅读全文
posted @ 2012-04-10 16:02
waytofall
阅读(2580)
评论(0)
推荐(0)
摘要:
整理自 http://blog.csdn.net/v_JULY_v/article/details/6444021求子数组的最大和题目描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如... 阅读全文
posted @ 2012-04-10 00:08
waytofall
阅读(37817)
评论(13)
推荐(0)

浙公网安备 33010602011771号