2017-01-31 30 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

Я нажимаю один элемент, если пустой стек –

+0

Хорошо. Это условие 'else if ($ B [count ($ stack) -1] == 1 && $ B [$ key] == 0)'. Вы удаляете только один элемент из стека, пишите? –

ответ

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

}