Python 3.x 从黑客等级计算问题

Python 3.x 从黑客等级计算问题,python-3.x,Python 3.x,加里是个狂热的徒步旅行者。他一丝不苟地跟踪他的徒步旅行,密切关注地形等小细节。在上次徒步旅行中,他走了整整一步。他每走一步,都要注意是上坡还是下坡。加里的远足从海平面开始到结束,每一步的上升或下降都代表着海拔的单位变化。我们定义了以下术语: 一座山是一系列连续的高于海平面的台阶,从海平面上升到海平面下降。 山谷是一系列低于海平面的连续台阶,从海平面下降到海平面上升。 根据Gary上次徒步旅行时上下台阶的顺序,找到并打印他走过的山谷数。 例如,如果Gary的路径是,他首先进入一个单位深的山谷。然后

加里是个狂热的徒步旅行者。他一丝不苟地跟踪他的徒步旅行,密切关注地形等小细节。在上次徒步旅行中,他走了整整一步。他每走一步,都要注意是上坡还是下坡。加里的远足从海平面开始到结束,每一步的上升或下降都代表着海拔的单位变化。我们定义了以下术语: 一座山是一系列连续的高于海平面的台阶,从海平面上升到海平面下降。 山谷是一系列低于海平面的连续台阶,从海平面下降到海平面上升。 根据Gary上次徒步旅行时上下台阶的顺序,找到并打印他走过的山谷数。 例如,如果Gary的路径是,他首先进入一个单位深的山谷。然后他爬出一座山,爬上一座单位高的山。最后,他回到海平面,结束了他的徒步旅行

功能描述 在下面的编辑器中完成CountingValley函数。它必须返回一个整数,表示遍历的谷数

我曾尝试用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吗。当水位为零时,为什么谷值要增加1。对逻辑感到困惑-如果步骤是上坡的
If(s[i]='U')

如果(级别==0)

那么它就是一个谷
valley+=1

该函数的工作原理是,当你从山谷中走出来时,对山谷进行计数,它告诉你从山谷中走出来是因为你到达了海平面,向上走了一步。

确实如此
level=0 valley=0
有什么不同,它们都是相似的
level=valley=0


逻辑很简单,你只需要计算一下,如果没有如果“U”-上坡指定为“1”,下坡指定为“1”的“D”-的数量,加上这两个计数,你应该得到“0”,就像在[DDDUUU]中一样,这将使valley增加“1”。

计算php中的valley hacker解决方案

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;
  }     


}
function countingvalley($steps,$path){
$valley=0;
$sealevel=0;
$newPath=str_split($path);
$c=计数($newPath);
如果($steps==c&&$c>=2){
对于($i=0;$i<$c;$i++){
如果($newPath[$i]=“D”){
$sealevel-=1;
}否则{
$sealevel+=1;
}
如果($sealevel==0&&$newPath[$i]==U”){
$valley+=1;
}
} 
返回$valley;
}     
}

您编写了代码但不理解它?我不明白,明白了。所以当你从零层向上移动时,你会进入山谷,或者你会下降一层?不,当你从地下移动到零层时,这意味着你正在走出山谷。把山谷想象成洞。我认为当你进入山谷而不是从山谷中出来时,函数实际上起作用,我们增加山谷的数量,在两种情况下,一种是我们在下坡,另一种(最重要的是)我们必须检查我们之前是否在海平面上,也就是说,在前一个循环中,level变量必须是0。