You are given N counters, initially set to 0, and you have two possible operations on them:
- increase(X) − counter X is increased by 1,
- max counter − all counters are set to the maximum value of any counter.
A non-empty array A of M integers is given. This array represents consecutive operations:
- if A[K] = X, such that 1 ≤ X ≤ N, then operation K is increase(X),
- if A[K] = N + 1 then operation K is max counter.
For example, given integer N = 5 and array A such that:
A[0] = 3 A[1] = 4 A[2] = 4 A[3] = 6 A[4] = 1 A[5] = 4 A[6] = 4the values of the counters after each consecutive operation will be:
(0, 0, 1, 0, 0) (0, 0, 1, 1, 0) (0, 0, 1, 2, 0) (2, 2, 2, 2, 2) (3, 2, 2, 2, 2) (3, 2, 2, 3, 2) (3, 2, 2, 4, 2)The goal is to calculate the value of every counter after all operations.
Write a function:
class Solution { public int[] solution(int N, int[] A); }
that, given an integer N and a non-empty array A consisting of M integers, returns a sequence of integers representing the values of the counters.
Result array should be returned as an array of integers.
For example, given:
A[0] = 3 A[1] = 4 A[2] = 4 A[3] = 6 A[4] = 1 A[5] = 4 A[6] = 4the function should return [3, 2, 2, 4, 2], as explained above.
Write an efficient algorithm for the following assumptions:
- N and M are integers within the range [1..100,000];
- each element of array A is an integer within the range [1..N + 1].
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int B[] = new int [N];
int counter = 0;
for(int i=0; i<B.length; i++){
B[i] = 0;
}
for(int i=0 ; i<A.length ; i++){
if(A[i]==N+1){
for(int j=0; j<B.length; j++){
B[j] = counter;
}
} else {
B[A[i]-1] ++;
counter = Math.max(B[A[i]-1],counter);
}
}
return B;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int B[] = new int [N];
int counter = 0;
for(int i=0; i<B.length; i++){
B[i] = 0;
}
for(int i=0 ; i<A.length ; i++){
if(A[i]==N+1){
curMax =
}
} else {
B[A[i]-1] ++;
counter = Math.max(B[A[i]-1],counter);
}
}
return B;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int B[] = new int [N];
int counter = 0;
int curMax = 0;
for(int i=0; i<B.length; i++){
B[i] = 0;
}
for(int i=0 ; i<A.length ; i++){
if(A[i]==N+1){
curMax = counter;
}
} else {
B[A[i]-1] ++;
counter = Math.max(B[A[i]-1],counter);
}
}
return B;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int B[] = new int [N];
int counter = 0;
int curMax = 0;
for(int i=0; i<B.length; i++){
B[i] = 0;
}
for(int i=0 ; i<A.length ; i++){
if(A[i]==N+1){
curMax = counter;
} else {
B[A[i]-1] ++;
counter = Math.max(B[A[i]-1],counter);
}
}
return B;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int B[] = new int [N];
int counter = 0;
int curMax = 0;
for(int i=0; i<B.length; i++){
B[i] = 0;
}
for(int i=0 ; i<A.length ; i++){
if(A[i]==N+1){
curMax = counter;
} else {
if()
B[A[i]-1] ++;
counter = Math.max(B[A[i]-1],counter);
}
}
return B;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int B[] = new int [N];
int counter = 0;
int curMax = 0;
for(int i=0; i<B.length; i++){
B[i] = 0;
}
for(int i=0 ; i<A.length ; i++){
if(A[i]==N+1){
curMax = counter;
} else {
if(B[A[i]-1] <= )
B[A[i]-1] ++;
counter = Math.max(B[A[i]-1],counter);
}
}
return B;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int B[] = new int [N];
int counter = 0;
int curMax = 0;
for(int i=0; i<B.length; i++){
B[i] = 0;
}
for(int i=0 ; i<A.length ; i++){
if(A[i]==N+1){
curMax = counter;
} else {
if(B[A[i]-1] < curMax){
}
B[A[i]-1] ++;
counter = Math.max(B[A[i]-1],counter);
}
}
return B;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int B[] = new int [N];
int counter = 0;
int curMax = 0;
for(int i=0; i<B.length; i++){
B[i] = 0;
}
for(int i=0 ; i<A.length ; i++){
if(A[i]==N+1){
curMax = counter;
} else {
if(B[A[i]-1] < curMax){
B[A[i]-1] = curMax;
}
B[A[i]-1] ++;
counter = Math.max(B[A[i]-1],counter);
}
}
return B;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int B[] = new int [N];
int counter = 0;
int curMax = 0;
for(int i=0; i<B.length; i++){
B[i] = 0;
}
for(int i=0 ; i<A.length ; i++){
if(A[i]==N+1){
curMax = counter;
} else {
if(B[A[i]-1] < curMax){
B[A[i]-1] = curMax;
}
B[A[i]-1] ++;
counter = Math.max(B[A[i]-1],counter);
}
}
return B;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int B[] = new int [N];
int counter = 0;
int curMax = 0;
for(int i=0; i<B.length; i++){
B[i] = 0;
}
for(int i=0 ; i<A.length ; i++){
if(A[i]==N+1){
curMax = counter;
} else {
if(B[A[i]-1] < curMax){
B[A[i]-1] = curMax;
}
B[A[i]-1] ++;
counter = Math.max(B[A[i]-1],counter);
}
}
for (int i=0; i<B.length ; i++){
if(B[i] < curMa)
}
return B;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int B[] = new int [N];
int counter = 0;
int curMax = 0;
for(int i=0; i<B.length; i++){
B[i] = 0;
}
for(int i=0 ; i<A.length ; i++){
if(A[i]==N+1){
curMax = counter;
} else {
if(B[A[i]-1] < curMax){
B[A[i]-1] = curMax;
}
B[A[i]-1] ++;
counter = Math.max(B[A[i]-1],counter);
}
}
for (int i=0; i<B.length ; i++){
if(B[i] < curMax)
}
return B;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int B[] = new int [N];
int counter = 0;
int curMax = 0;
for(int i=0; i<B.length; i++){
B[i] = 0;
}
for(int i=0 ; i<A.length ; i++){
if(A[i]==N+1){
curMax = counter;
} else {
if(B[A[i]-1] < curMax){
B[A[i]-1] = curMax;
}
B[A[i]-1] ++;
counter = Math.max(B[A[i]-1],counter);
}
}
for (int i=0; i<B.length ; i++){
if(B[i] < curMax){
B[i] = curMax;
}
}
return B;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int B[] = new int [N];
int counter = 0;
int curMax = 0;
for(int i=0; i<B.length; i++){
B[i] = 0;
}
for(int i=0 ; i<A.length ; i++){
if(A[i]==N+1){
curMax = counter;
} else {
if(B[A[i]-1] < curMax){
B[A[i]-1] = curMax;
}
B[A[i]-1] ++;
counter = Math.max(B[A[i]-1],counter);
}
}
for (int i=0; i<B.length ; i++){
if(B[i] < curMax){
B[i] = curMax;
}
}
return B;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int B[] = new int [N];
int counter = 0;
int curMax = 0;
for(int i=0; i<B.length; i++){
B[i] = 0;
}
for(int i=0 ; i<A.length ; i++){
if(A[i]==N+1){
curMax = counter;
} else {
if(B[A[i]-1] < curMax){
B[A[i]-1] = curMax;
}
B[A[i]-1] ++;
counter = Math.max(B[A[i]-1],counter);
}
}
for (int i=0; i<B.length ; i++){
if(B[i] < curMax){
B[i] = curMax;
}
}
return B;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int[] solution(int N, int[] A) {
// write your code in Java SE 8
int B[] = new int [N];
int counter = 0;
int curMax = 0;
for(int i=0; i<B.length; i++){
B[i] = 0;
}
for(int i=0 ; i<A.length ; i++){
if(A[i]==N+1){
curMax = counter;
} else {
if(B[A[i]-1] < curMax){
B[A[i]-1] = curMax;
}
B[A[i]-1] ++;
counter = Math.max(B[A[i]-1],counter);
}
}
for (int i=0; i<B.length ; i++){
if(B[i] < curMax){
B[i] = curMax;
}
}
return B;
}
}
The solution obtained perfect score.