2017-01-31 23 views
0

コードビリティに関するこの課題を解決しようとしていますfish challengeなぜ私のコードですべてのテストが渡されるのか理解できません。魚コードシートのエクササイズ

function solution($A, $B) { 
    // write your code in PHP7.0 
    $stack =[]; 

    foreach($A as $key =>$value) { 
    if(empty($stack)){ 
     array_push($stack,$key); 
    } 
    else if($B[count($stack)-1] == 1 && $B[$key]==0) 
    { 
     if($value > $A[count($stack)-1]) 
     { 
     array_pop($stack); 
     array_push($stack,$key); 
     } 
    } 
    else array_push($stack,$key); 
    } 
    return count($stack); 
} 
+0

スタックが空の場合は、要素をプッシュしていないのはなぜ? –

+0

スタックが空の場合、1つの要素をプッシュしています。 –

+0

この条件は 'else if($ B [count($ stack)-1] == 1 && $ B [$ key] == 0)'です。スタックから1つの要素だけを削除しますか? –

答えて

-1

この方法を試してください。

function solution($A, $B) { 
    // write your code in PHP7.0 
    $stack =[]; 

    foreach($A as $key =>$value) { 
    if(empty($stack)){ 
     array_push($stack,$key); 
    } 
    else if($B[count($stack)-1] == 1 && $B[$key]==0) 
    { 
     while(true) { 
      if($value > $A[count($stack)-1] && !empty($stack) && $B[count($stack)-1] == 1) 
      { 
      array_pop($stack); 
      } 
      else break; 
     } 
     array_push($stack,$key); 
    } 
    else array_push($stack,$key); 
    } 
    return count($stack); 

}