小编Arc*_*gel的帖子

得到n下面每个数字的总和

这是我的代码,但是速度慢,任何方式都可以更快地完成..我正在打的数字范围是123456789但我不能低于15秒,我需要它低于5秒..

long num = 0;

for (long i = 0; i <= n; i++)
{
    num = num + GetSumOfDigits(i);
}

static long GetSumOfDigits(long n)
{
    long num2 = 0;
    long num3 = n;
    long r = 0;
    while (num3 != 0)
    {
        r = num3 % 10;
        num3 = num3 / 10;
        num2 = num2 + r;
    }

    return num2;
}
Run Code Online (Sandbox Code Playgroud)

sum =(n(n+1))/2 没有给我我需要的结果,没有正确计算..

对于N = 12,总和是1 + 2 + 3 + 4 + 5 + 6 + 7 …

c# algorithm optimization

6
推荐指数
2
解决办法
452
查看次数

按数字位数的总和排序

例:

a ="56 65 74 100 99 68 86 180 90",按数字重量排序变为:"100 180 90 56 65 74 68 86 99"

当两个数字具有相同的"权重"时,让我们将它们分类为字符串而不是数字:100表示​​180之前,因为它的"权重"(1)小于180(9)的180和90之前的权重因为,具有相同的"重量"(9)它之前作为一个字符串.

列表中的所有数字都是正数,列表可以为空.

我的测试:

[TestMethod]
public void Test1()
{
     Assert.AreEqual("2000 103 123 4444 99", WeightSort.orderWeight("103 123 4444 99 2000"));
}

[TestMethod]
public void Test2()
{
    Assert.AreEqual("11 11 2000 10003 22 123 1234000 44444444 9999", WeightSort.orderWeight("2000 10003 1234000 44444444 9999 11 11 22 123"));
}
Run Code Online (Sandbox Code Playgroud)

我的班级来计算权重的顺序:

public class WeightSort
{
    public static string orderWeight(string strng)
    {
        List<int> list = strng.Split(' ').Select(Int32.Parse).OrderBy(i => i).ToList(); …
Run Code Online (Sandbox Code Playgroud)

c# sorting algorithm

1
推荐指数
1
解决办法
604
查看次数

标签 统计

algorithm ×2

c# ×2

optimization ×1

sorting ×1