Вы находитесь на странице: 1из 17

Codility MaxCounters Solution

Posted on June 5, 2014 by Martin

Short Problem Definition:


Calculate the values of counters after applying all alternating operations: increase
counter by 1; set value of all counters to current maximum.

Link
MaxCounters

Complexity:
expected worst-case time complexity is O(N+M);
expected worst-case space complexity is O(N)

Execution:
The idea is to perform the specified operation as stated. It is not required to iterate over
the whole array if a new value is set for all the values. Just save the value and check it
when an increase on that position is performed.

Solution:
1

#include <algorithm>

2
3

vector<int> solution(int N, vector<int> &A) {

vector<int> sol;

int current_max = 0;

int last_increase = 0;

7
8
9
10
11
12
13
14

for(int i=0; i<N;i++){


sol.push_back(0);
}

for(unsigned int i=0; i<A.size();i++){


if (A[i] > N) {
last_increase = current_max;
} else {

15

sol[A[i]-1] = max(sol[A[i]-1], last_increase);

16

sol[A[i]-1]++;

17

current_max = max(current_max, sol[A[i]-1]);

18
}

19
}

20
21

for(int i=0; i<N;i++){

22

sol[i] = max(sol[i], last_increase);

23

24
25
26

return sol;
}

27
Solution above for max counters is from https://www.martinkysel.com/codilitymaxcounters-solution/

https://www.martinkysel.com/codility-passingcars-solution/

https://www.martinkysel.com/hackerrank-solutions/

https://github.com/tpeczek/Codility
https://github.com/nfgrilo/Codility/tree/master/Lessons

https://codility.com/programmers/challenges/
https://codility.com/programmers/lessons/

https://codesays.com/solutions-to-training-by-codility/

Вам также может понравиться