Minimum Operations to Make the Array K-Increasing LeetCode solution in Java

1
class Solution {
2
public int kIncreasing(int[] arr, int k) {
3
int ans = arr.length;
4
int[] tails = new int[arr.length];
5
for (int i = 0; i < k; i++) {
6
int size = 0;
7
for (int j = i; j < arr.length; j += k) {
8
if (size == 0 || arr[j] >= tails[size - 1]) {
9
tails[size++] = arr[j];
10
} else {
11
int low = 0, high = size - 1;
12
while (low <= high) {
13
int mid = (low + high) / 2;
14
if (tails[mid] <= arr[j] && tails[mid + 1] > arr[j]) {
15
tails[mid + 1] = arr[j];
16
break;
17
} else if (tails[mid + 1] <= arr[j]) {
18
low = mid + 1;
19
} else {
20
high = mid - 1;
21
}
22
}
23
if (low > high) {
24
tails[0] = arr[j];
25
}
26
}
27
}
28
ans -= size;
29
}
30
return ans;
31
}
32
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0