题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求元素和值最大的那个子数组的和值。
C#实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public
static
int
FindGreatestSumOfSubArray(
int
[] pData)
{
if
(pData.Length <= 0)
return
-1;
int
nCurSum = 0;
int
nGreatestSum = 0;
for
(
int
i = 0; i < pData.Length; i++)
{
if
(nCurSum <= 0)
nCurSum = pData[i];
else
nCurSum += pData[i];
if
(nCurSum > nGreatestSum)
nGreatestSum = nCurSum;
}
return
nGreatestSum;
}
|
Java实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public
static
int
findGreatestSumOfSubArray(
int
[] pData)
{
if
(pData.length <=
0
)
return
-
1
;
int
nCurSum =
0
;
int
nGreatestSum =
0
;
for
(
int
i =
0
; i < pData.length; i++)
{
if
(nCurSum <=
0
)
nCurSum = pData[i];
else
nCurSum += pData[i];
if
(nCurSum > nGreatestSum)
nGreatestSum = nCurSum;
}
return
nGreatestSum;
}
|
Python实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
def
find_greatest_sum_of_sub_array(pData):
"""
连续子数组的最大和
输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。
求元素和值最大的那个子数组的和值
:param pData:
:return:
"""
if
len
(pData) <
=
0
:
return
nCurSum
=
0
nGreatestSum
=
0
for
item
in
pData:
if
nCurSum <
=
0
:
nCurSum
=
item
else
:
nCurSum
+
=
item
if
nCurSum > nGreatestSum:
nGreatestSum
=
nCurSum
return
nGreatestSum
|
本文转自 许大树 51CTO博客,原文链接:http://blog.51cto.com/abelxu/1979253,如需转载请自行联系原作者