首页 > 解决方案 > 为什么我的计数谷问题的解决方案会超时?

问题描述

这是在 HackerRank 上计算谷值的问题:

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

一座山是高于海平面的一系列连续台阶,从海平面上升开始,以下降到海平面结束。山谷是低于海平面的一系列连续台阶,从海平面下降开始,到海平面上升结束。给定徒步过程中上下台阶的顺序,找到并打印走过的山谷数量。

例子

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

功能说明

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

countingValleys 具有以下参数:

int steps: 徒步旅行的步数 string path: 描述路径的字符串 Returns

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# 环境的设置,C# 的时间限制是 3 个部分,这已经足够了。我不明白为什么这需要超过 3 秒?

但是如果可能的话,我该如何优化解决方案呢?

我也想知道这是否是一些营销技巧让我购买,以便我可以看到失败的隐藏测试并对其进行调试?

标签: c#

解决方案


我认为您的解决方案因为这条线而超时

Console.WriteLine(step);

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


推荐阅读