StoneWall::solution()   B
last analyzed

Complexity

Conditions 6
Paths 5

Size

Total Lines 19
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 19
rs 8.8571
cc 6
eloc 13
nc 5
nop 1
1
<?php
2
3
namespace Lesson05;
4
5
class StoneWall
6
{
7
    public function solution($H)
8
    {
9
        $N = count($H);
10
        $blocks = 0;
11
        $stack = [];
12
        $stack_position = 0;
13
        for ($i = 0; $i < $N; $i++) {
14
            while ($stack_position > 0 && $stack[$stack_position - 1] > $H[$i]) {
15
                $stack_position--;
16
            }
17
            if (!($stack_position > 0 && $stack[$stack_position - 1] == $H[$i])) {
18
                $blocks++;
19
                $stack[$stack_position] = $H[$i];
20
                $stack_position++;
21
            }
22
        }
23
24
        return $blocks;
25
    }
26
}
27