c# - 在数组上找到 N 个连续整数,其总和(连续整数)S 是我有的整数

标签 c# arrays algorithm

explanation

我已经盯着这个问题看了几分钟。 在我问这个任务之前我做了一些研究,但它是在不同的情况下,他们没有包括我真正需要的东西。 我在SO中找到了这段代码。

static int GetLargestSum(int[] array, int n, int sum)
{
    int largestSum = 0;
    int previousSum = 0;

    for (int i = 0; i <= array.Length - n; i++)
    {
        if (i == 0)
        {
            for (int j = 0; j < n; j++)
            {
                largestSum += array[j];
            }

            previousSum = largestSum;
        }
        else
        {
            int currentSum = previousSum - array[i - 1] + array[i + n - 1];

            if (currentSum > largestSum)
            {
                largestSum = currentSum;
            }
            previousSum = currentSum;
        }
    }

    return largestSum;
}

是的,这可行,但如果仅适用于最大金额。 我试图修改它以将 sum var 添加到代码中,但实际上并没有那么顺利。 所以如果有人帮助我,我将非常感激,因为我被困在这个算法中。 谢谢!

最佳答案

解决它的方法是遍历数组的每一段并计算其总和。粗略的初稿看起来像这样

public static int ConsecutiveSumArrangements(int[] vals, int count, int sum)
    {

        var number = 0;
        for (int i = 0; i < (vals.Length - count); i++)
        {
            var segSum = vals.Skip(i).Take(count).Sum();
            if (segSum == sum)
            {
                number++;
            }
        }

        return number;
    }

关于c# - 在数组上找到 N 个连续整数,其总和(连续整数)S 是我有的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42724865/

相关文章:

c# - HttpContext,替代方法 Context.Request.Unvalidated for pre .Net 4.5 servers

c# - wpf excel 喜欢网格编辑吗?

arrays - 管道完整的数组对象而不是一次一个数组项?

java - 如何将数组索引映射到特定日期?

c - 如何创建一棵树,在其中找到正确的节点来添加子节点?

java - 嵌套 For 循环动态深度 Java

javascript - 在javascript中测试多维数组

c# - 如何从 .NET 中的存储过程返回 oracle 输出参数

c# - 在 Linq2SQL 中不先加载就删除实体

java - ByteBuffer 的 HashSet(实际上是整数),用于从 ByteBuffer 数组中分离唯一和非唯一元素