你好,我正在为一次面试代码测试做准备,并遇到了这个问题。我尝试用C#来解决它,下面是我丢脸的答案,我甚至不知道它是否正确,但我猜大多数情况下都不正确,能否有人请好心提供答案,这样当我重新制定解决方案时,我至少可以有答案来验证输出。谢谢。
示例数据:
int[] arr = {5, 1, -7, 3, 7};
代码:
int[] LargestsubarrayMaxSum(int[] arr)
{
int temp = 0;
int[] resultArr = new int[arr.Length];
for (int i = 0; i < arr.Length - 1; i++)
{
if (i != 0)
{
foreach (int item in resultArr)
{
temp += item;
}
if (temp + arr[i + 1] > 0)
{
resultArr[i + 1] = temp + arr[i + 1];
}
}
else
{
if ((arr[i] + arr[i + 1]) >= 0)
{
resultArr[i] = arr[i];
resultArr[i + 1] = arr[i] + arr[i + 1];
}
else
{
resultArr[i] = arr[i];
resultArr[i + 1] = 0;
}
}
}
return resultArr;
}