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