
The following implementation in Java scores 100/100 on Codility.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
public static int (int[] A, int[] B) { int size = A.length, cnt = size; int winner = 0; Stack<Integer> stack = new Stack<Integer>();
for(int i=0;i<size-1;i++){ if(B[winner] == 1){ if(B[i+1] == 0){ while(A[winner]<A[i+1]){ if(stack.size() > 0) winner = stack.pop(); else winner = i+1; cnt--; } if(A[winner]>A[i+1]) cnt--; }else{ stack.push(winner); winner = i+1; } }else winner++; } return cnt; }
|
近期评论