摘要: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来源:面试八股文
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!