Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的解决方案会超时?_C# - Fatal编程技术网

C# 为什么我的解决方案会超时?

C# 为什么我的解决方案会超时?,c#,C#,这是计算HackerRank上的谷数的问题: 一个狂热的徒步旅行者对他们的徒步旅行做了细致的记录。在上一次徒步旅行中,每走一步都要注意是上坡还是下坡。远足总是在海平面上开始和结束,每一步的上升或下降都代表着一个单位的高度变化。我们定义了以下术语: 一座山是一系列连续的高于海平面的台阶,从海平面上升到海平面下降。 山谷是一系列低于海平面的连续台阶,从海平面下降到海平面上升。 根据徒步过程中的上下台阶顺序,查找并打印经过的山谷数 范例 徒步旅行者首先进入一个单位深的山谷。然后他们爬出来,爬上一座单位

这是计算HackerRank上的谷数的问题:

一个狂热的徒步旅行者对他们的徒步旅行做了细致的记录。在上一次徒步旅行中,每走一步都要注意是上坡还是下坡。远足总是在海平面上开始和结束,每一步的上升或下降都代表着一个单位的高度变化。我们定义了以下术语:

一座山是一系列连续的高于海平面的台阶,从海平面上升到海平面下降。 山谷是一系列低于海平面的连续台阶,从海平面下降到海平面上升。 根据徒步过程中的上下台阶顺序,查找并打印经过的山谷数

范例

徒步旅行者首先进入一个单位深的山谷。然后他们爬出来,爬上一座单位高的山。最后,徒步旅行者回到海平面并结束徒步旅行

功能描述

在下面的编辑器中完成CountingValley函数

CountingValley具有以下参数:

int steps:徒步旅行的步数 字符串路径:描述路径的字符串 返回

int:经过的谷数 输入格式

第一行包含一个整数,即徒步旅行的步数。 第二行包含描述路径的单个字符串

我的解决方案通过了前13个测试,但由于超时,最后7个测试失败

    public static int countingValleys(int steps, string path)
    {
        int valleys = 0;

        int elevation = 0;

        foreach(Char step in path)
        {
            Console.WriteLine(step);

            if (step == 'U')
                elevation++;
            else if (step == 'D')
            {
                elevation--;

                if (elevation == -1)
                    valleys++;
            }
        }

        return valleys;
    }
我检查了HackerRank C#environment的设置,C#environment的时间限制是3个部分,这已经足够了。我不明白为什么这需要3秒钟以上

但如果可能,我如何优化解决方案


我还想知道这是否是某种营销手段,让我购买,这样我就可以看到失败的隐藏测试并对其进行调试?

您从不使用
int steps
。如果远足只有23步,但你得到一个2GB的字符串呢

除去

foreach(Char step in path)
和使用

for(int i=0 ; i<steps ; i++)
{
    Char step = path[i];

for(int i=0;i我认为您的解决方案超时是因为行的缘故

Console.WriteLine(step);

打印实际上非常耗时,在提交最终解决方案之前,您应该清除所有调试打印。

您应该查看您的帖子,我认为可能缺少数字,例如“上一次远足采取了正确的步骤”。更好的是,尝试将问题简化为一个更简单的问题。如果你通过了13个测试,那么你的问题可能在一个特殊的边缘情况下,例如无限或循环问题。试着检查一下。@JakubFojtik失败的测试实际上说明了失败的原因。如果有编码错误,它会说
错误的结果
,但事实并非如此。它是特定的ally说它超时了,好像函数可能永远不会返回一样。我只是看不出来,但会仔细检查。我不太明白为什么这会不同,但尝试了相同的结果,仍然超时。@zar:如果你检查23步或2000000步,这是一个明显的区别。该死,就是这样,我错过了。