请设计⼀个算法,找出C#数组中的最⼤范围,计算该范围内元素之和

B站影视 2024-12-28 23:06 3

摘要:using System;class Program{static void Main{// 输入数组int array = { -2, 1, -3, 4, -1, 2, 1, -5, 4 };// 找到最大范围及其和var result = FindMaxS

以下是一个算法设计,能够在 C# 数组中找出最大范围(子数组),并计算该范围内的元素之和。这个问题是典型的最大子数组问题,可以使用 Kadane 算法 来高效解决,其时间复杂度为 O(n)。

using System;class Program{static void Main{// 输入数组int array = { -2, 1, -3, 4, -1, 2, 1, -5, 4 };// 找到最大范围及其和var result = FindMaxSubarray(array);// 输出结果Console.WriteLine($"最大范围: [{result.StartIndex}, {result.EndIndex}]");Console.WriteLine($"范围内的元素之和: {result.MaxSum}");Console.WriteLine("子数组: " + string.Join(", ", result.Subarray));}static (int StartIndex, int EndIndex, int MaxSum, int Subarray) FindMaxSubarray(int array){int maxSum = int.MinValue;int currentSum = 0;int start = 0, tempStart = 0, end = 0;for (int i = 0; i maxSum){maxSum = currentSum;start = tempStart;end = i;}// 如果当前和小于0,重新开始计算子数组if (currentSum

对于输入数组 { -2, 1, -3, 4, -1, 2, 1, -5, 4 },输出结果为:

最大范围: [3, 6]范围内的元素之和: 6子数组: 4, -1, 2, 1

来源:面试八股文

相关推荐