c# - 为什么我的计数谷问题的解决方案会超时?
问题描述
这是在 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 秒?
但是如果可能的话,我该如何优化解决方案呢?
我也想知道这是否是一些营销技巧让我购买,以便我可以看到失败的隐藏测试并对其进行调试?
解决方案
我认为您的解决方案因为这条线而超时
Console.WriteLine(step);
打印实际上非常耗时,您应该在提交最终解决方案之前摆脱所有调试打印。
推荐阅读
- android - RecyclerView Kotlin,无法将回收器小部件添加到布局
- php - 如何在推送通知中显示图标?
- java - 以编程方式读取属性文件时,Log4J2 不记录任何内容
- android - 移动到另一个活动并返回时如何保存活动状态?
- reactjs - React JS 导入 css 文件有表达式 no-unused-expressions
- sql-server - 过程或函数“SlctNxtPrv”需要参数“@PRV”,但未提供?
- python - Django选择与条件间接相关
- c# - 希望随机化不同的可能输出
- c++ - IBM MQ 8.0.0.x C++ 包括
- python - 如何从 OpenCV、python 3 获取图像原始字节?