2111. Minimum Operations to Make the Array K Increasing (Hard) - TengnanYao/daily_leetcode GitHub Wiki

class Solution:
    def kIncreasing(self, arr: List[int], k: int) -> int:
        arrs = []
        for _ in range(k):
            arrs.append([])
        n = len(arr)
        for i in range(n):
            arrs[i % k].append(arr[i])
        result = 0
        for s in arrs:
            nums = []
            for num in s:
                if not nums or num >= nums[-1]:
                    nums.append(num)
                else:
                    i = bisect_right(nums, num)
                    nums[i] = num
            result += len(s) - len(nums)
        return result