题目:返回一个整数数组中最大子数组要求:输入一个整形数组,数组里有整数也有负数;数组中连续的一个或多个整数组成一个整数组每个子数组都有一个和;求所有子数组的和的最大值,要求时间复杂度为O(n)。思路:设数组为a[5],则所有子数组的和可以为(1) a[0]+a[1]+a[2]+a[3]+a[4](2...
分类:
编程语言 时间:
2015-03-17 20:00:14
阅读次数:
181
一、题目返回一个整数数组中最大子数组的和要求:输入一个整形数组,数组里有正数有负数数组中连续的一个或多个整数组组成一个子数组,每个子数组都有一个和求所有子数组的和的最大值二、解题思路1、以输入三个数为例进行比较2、分三种情况,分别为一个数,两个数相加和三个数相加3、分别求得三种情况的最大值,进行比较...
分类:
其他好文 时间:
2015-03-17 19:39:52
阅读次数:
119
上一篇我们用分治法已经将问题的复杂度降低了许多,但是,我们依旧不满足,于是,我们尝试用动态规划来做这道题。解题思路:
对于这样一个连续和的问题(个人习惯叫做最大连续和),如果我们要用动态规划来解,首先得考虑状态和状态转移方程。如果我们把题述数组看成序列,那么是不是可以用序列DP来考虑呢?
我们不妨考虑一个这样的序列:1,-3,5,-2,4
a[i]表示这个序列的第 i 个元素,dp[i]表示最...
分类:
编程语言 时间:
2015-03-11 23:27:57
阅读次数:
2083
前段时间看《算法导论》了解到最大子数组问题,但没有做习题,遗漏了一些重要的知识,现在《编程珠玑》上看到完整的讲解,还有一些算法技巧,故记录于此。1.定义问题在数组中找出元素之和最大的子数组,假定当数组元素全部为负数时,最大子数组是空数组,和为0。2.解决问题令数组为x[n],最大子数组下标为[p,q...
分类:
编程语言 时间:
2015-03-11 21:13:58
阅读次数:
150
题目描述:
给定一个n个元素的数组a,求a[i]+a[i+1]+…+a[j]的最大值(0 <= i <= j < n)解题思路:
我们来试试用分治法来解决这个问题。首先我们想要找到一个子数组a[i…j]为最大子数组,我们假设数组的中点为mid,可以将数组a[low…high]分成两个子数组:a[low…mid]和a[mid+1…high],那么最大子数组必然为下述三种可能之一:
1) low...
分类:
编程语言 时间:
2015-03-10 21:31:56
阅读次数:
155
第一种:暴力枚举所有的子数组,然后比较选出最大,时间复杂度O(n^2)第二种:分治法,参见算法导论,时间复杂度O(nlogn)第三种:动态规划,时间复杂度O(n)1、A[1..j+1]的最大子数组为:max{A[1..j] , A[i,j+1](10?A[j+1]+K[j]:A[j+1](以A[j+...
分类:
编程语言 时间:
2015-03-08 15:37:45
阅读次数:
156
题目简述:购买一家股票,给若干股票不同时期预期价位,让你判断何时买何时抛可以获得最大收益。输入:各时期价位总数n以及每个价位。输出:最大收益以及买和投的时间(时期简单记为1-n)。解题思路A:O(n)考虑价位变化。由输入数据可以得到每次价位变化值a2-a1,并依次求和count,根据count是否为...
分类:
编程语言 时间:
2015-02-26 20:12:42
阅读次数:
183
给定一个由N个整数元素组成的数组arr,数组中有正数也有负数,这个数组不是一般的数组,其首尾是相连的。数组中一个或多个连续元素可以组成一个子数组,其中存在这样的子数组arr[i],…arr[n-1],arr[0],…,arr[j],现在请你这个ACM_Lover用一个最高效的方法帮忙找出所有连续子数组和的最大值(如果数组中的元素全部为负数,则最大和为0,即一个也没有选)。...
分类:
编程语言 时间:
2015-02-20 22:04:46
阅读次数:
218
题目:在线性时间内非递归的求数组的最大连续子数组(连续和最大的子数组)。思路:设最大子数组的和为max,起点和终点位置为s、e,正在扫描的子数组的和为add,起点和终点位置为i、j。max的初始值为-∞。 1.若数组的值全为负,则返回最大值。 2.逐个扫描数组元素,更新add、i、j的值...
分类:
编程语言 时间:
2015-02-10 14:52:28
阅读次数:
204
题目要求如下:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为 O(n)。
例如输入的数组为 1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为 3, 10, -4, 7, 2,
因此输出为该子数组的和 18。这个问题还是来自July微软面试100题序列,我的解题思路...
分类:
编程语言 时间:
2015-02-07 15:58:53
阅读次数:
227