本文主要是介绍一位数组的最大和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。
求所有子数组的和的最大值。要求时间负责度为O(n)。
分析:从第一个位置开始累加求和,结果为负数时候放弃前面的累加和重新计算。
static int MaxSum(int arr[], int n) { int currentSum = arr[0]; int ans = currentSum; for (int i = 1; i < n; i++) { currentSum = Math.max(currentSum + arr[i], arr[i]); ans = Math.max(ans, currentSum); } return ans; }
这篇关于一位数组的最大和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!