求连续子数组最大和问题的两种解法_PHP实现

原创 2015年07月07日 22:25:47

问题描述

求子数组的最大和

题目描述:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。

关于连续子数组最大和这个问题,有两种解法,一种是动态规划

解法如下:

	function getMaxSubSum($arr){
		$curSum = $arr[0];
		$maxSum = $arr[0];
		for($i = 1; $i < count($arr); $i++){
			if($curSum > 0) $curSum += $arr[$i];
			else $curSum = $arr[$i];
			if($curSum > $maxSum) $maxSum = $curSum;
		}
		return $maxSum;
	}

还有一种是扫描法

	function getMaxSubSum($arr){
		$curSum = 0;
		$maxSum = 0;
		for($i = 0; $i < count($arr); $i++ ){
			$curSum += $arr[$i];
			if($curSum <= 0) $curSum = 0;
			if($curSum > $maxSum) $maxSum = $curSum;
		}
		if($maxSum == 0){
			$maxSum = $arr[0];
			for($i = 1; $i < count($arr); $i++){
				if($maxSum < $arr[$i] ) $maxSum = $arr[$i];
			}
		}
		return $maxSum;
	}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

求连续子数组的最大和问题

http://www.cnblogs.com/allzy/p/5162815.html 前言   这几天一直在读Weiss的数据结构书(Data Structures an...

[数据结构与算法分析] 求连续子数组的最大和问题

前言   这几天一直在读Weiss的数据结构书(Data Structures and Algorithm Analysis in C:Second Edition),其中第二章是关于简单的算法分析(...

连续子数组最大和问题编程实现

引自 http://www.cnblogs.com/en-heng/p/3970231.html         连续子数组最大和问题 问题描述 输入一个整形数组,求数组中连续的子数组使...
  • E_pen
  • E_pen
  • 2015-05-14 20:23
  • 721

KT学算法(一)——数列连续子列最大和问题的O(n)解法

深刻意识到算法的重要性。从头开始,积累基本的算法模型。问题描述数列连续子列最大和问题是指:给定一个数列A,求出一个子数列,{Ai,Ai+1,Ai+2,……,Aj},其中i<=j,使得这个子数列中每一个...

学数据结构的第一个算法,最大子列和问题,即求一个数组连续子列和求最大

问题:给定一整数序列a1,a2,a3,...an(可能有负数),求a1~an的一个子序列ai~aj,使得ai~aj的和最大  例如:a[]={4,-3,5,2,-1,2,6,2},考虑算法的复杂度,...

连续子数组的最大和问题(一维和二维)To the Max (POJ 1050)

一维数组的连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 这是一个典型的D...

连续子数组最大和问题(扫描法改进)

问题描述输入一个整形数组,求数组中连续的子数组使其和最大。比如,数组x 应该返回 x[2..6]的和187.Kadane算法简介对于连续子数组求取最大和问题有很多种方法,时间复杂度和空间复杂...

【剑指offer】面试题31-连续子数组的最大和问题

题目描述:输入一个整形数组,数组中有正数也有负数。数组中一个或多个连续的整数组成一个子数组,求所有子数组和的最大值,时间复杂度为O(N)。题目分析:对于这道题目,我们大多数人一下子就可以想到:我可以列...

连续子数组的最大和

  • 2015-12-23 15:11
  • 67KB
  • 下载

[算法导论-分治策略]求最大子数组之各种解法及源代码实现

/* 问题: 已知数组 A = {2,4,-1,-5,3,-4,2,-6,4,1,2,2,4,-2,2}; 求: 最小子数组和 分析: 一:  分治法:把问题分解成若干个简单易解的小问题,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)