加里(Gary)是一个狂热的徒步旅行者。他精心跟踪自己的远足,并密切关注地形等小细节。在他的最后一次远足中,他采取了确切的步骤。对于他采取的每一个步骤,他都指出这是上坡还是下坡。加里(Gary)的远足在海平面开始和结束,每次上或下的步数代表高度的单位变化。我们定义以下术语: 一座山是一系列从海平面上升的连续步骤,从从海平面上升到从海平面下降到结束。 山谷是指一系列从海平面以下的连续台阶,从海平面向下的台阶开始直至海平面的上升。 考虑到加里上次徒步旅行时上下的顺序,找到并打印出他走过的山谷数。 例如,如果加里(Gary)的路径是,则他首先进入一个深谷单位。然后,他爬上一个高高的山脉。最后,他回到海平面并结束了远足。
功能说明 在下面的编辑器中完成countingValleys函数。它必须返回一个整数,该整数表示加里所遍历的谷数。
我尝试用python编写此代码,并且运行良好,但无法从逻辑上找出代码
#n is the number of steps and s is the sequence of steps taken
def countingValleys(n, s):
level=valley=0
for i in range(n):
if(s[i]=='U'):
level+=1
if(level==0):
valley+=1
else:
level-=1
return valley
结果很好
问题:有人可以向我解释一下从if(level == 0)开始的逻辑。如果我们在人上山时将水平面增加一个单位,那么我们不应该将山谷增加1。当电平为零时,为什么谷值要增加一。对逻辑感到困惑-有人可以帮我理解这一点
答案 0 :(得分:1)
如果台阶上坡if(s[i]=='U')
级别为0 if(level==0)
那就是山谷valley+=1
此功能的工作原理是对从谷中出来时的谷数进行计数,并告诉您从谷中出来是因为您到达海平面后会上坡。
答案 1 :(得分:0)
有
<a class="link-right verbtable" data-text="+" old_onclick="expandfullverbtable();" onclick="expandfullverbtable();">Full verb table</a>
<a class="link-right verbtable" data-text="+" old_onclick="expandfullverbtable();" onclick="expandfullverbtable();">Full verb table</a>
<a class="link-right verbtable" data-text="+" old_onclick="expandfullverbtable();" onclick="expandfullverbtable();">Full verb table</a>
有所不同,它们都是相似的level=0 valley=0
逻辑很简单,您只需计算是否将“ U”上坡分配为“ 1”,将“ D”下坡编号分配为“ -1”,并且在将两个计数相加后得出“如[DDDUUU]中的0,将使谷值增加“ 1”。
答案 2 :(得分:0)
php中的数谷黑客解决方案
function countingValleys($steps, $path) {
$valley = 0;
$sealevel = 0;
$newPath = str_split($path);
$c = count($newPath);
if ($steps == $c && $c >= 2) {
for($i = 0; $i < $c; $i++) {
if ($newPath[$i] == "D") {
$sealevel -= 1;
} else {
$sealevel += 1;
}
if ($sealevel == 0 && $newPath[$i] == "U") {
$valley += 1;
}
}
return $valley;
}
}
答案 3 :(得分:0)
很简单,
代码的意思是,如果您遇到向上的符号,则表示您已攀爬。现在,如果你从飞机或山上爬过,你的等级会大于 0。但如果你从山谷爬到水平,那么只有你的等级会变成 0。
基本上,如果level<0 表示您仍在山谷中,level>0 表示您在山上,level 0 表示您在海平面。
所以如果您遇到一个表示攀爬动作的向上符号,然后您的等级为 0,则意味着您已经爬上了一个山谷。
答案 4 :(得分:0)
我们可以将上坡和下坡的值指定为 uphill=1
、downhill=-1
和 sea level=0
,而山谷可以定义为我们从下坡到达海平面时,即从负值归零
因此,如果我们处于负水平并通过添加下一步移动到海平面,我们可以增加山谷。
找到下面的代码片段
def returnCode(step):
if step=='U':
return 1;
return -1;
def countingValleys(steps, path):
# Write your code here
level=valley=0
for element in path:
code = returnCode(element)
if level< 0 and level+code == 0:
valley=valley+1
level = level+code
return valley