本文主要是介绍[华为机试练习题]56.求子数组的最大和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
描述:
输入一个整形数组。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。
接口
Int GetSubArraySum(Int* pIntArray,Int nCount);
规格
要求时间复杂度为O(n)
举例
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,
因此输出为该子数组的和18
练习阶段:
初级
代码
/*---------------------------------------
* 日期:2015-07-05
* 作者:SJF0115
* 题目:求子数组的最大和
* 来源:华为机试练习题
-----------------------------------------*/
#include <iostream>
#include <string.h>
#include "oj.h"
using namespace std;/*
功能:输入:pIntArray:数组,nCout:数组长度输出:返回:返回最大值*/int GetSubArraySum(int* pIntArray, int nCount){if(pIntArray == NULL || nCount <= 0){return 0;}//forint sum = pIntArray[0];int max = pIntArray[0];for(int i = 1;i < nCount;++i){if(sum < 0){sum = 0;}//ifsum += pIntArray[i];if(max < sum){max = sum;}//if}//forreturn max;
}
这篇关于[华为机试练习题]56.求子数组的最大和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!