Max Chunks To Make Sorted II LeetCode solution in Python
1# Runtime: 187 ms (Top 16.67%) | Memory: 14.5 MB (Top 12.03%)2class Solution:3def maxChunksToSorted(self, arr: List[int]) -> int:4sortedArr = sorted(arr)56posMap = defaultdict(list)7for i in range(len(sortedArr)):8posMap[sortedArr[i]].append(i) # keep track the right sortedArr[i] position910idx = len(arr) - 111cnt = 012for i in range(len(arr) - 1, -1, -1):13idx = min(14idx, posMap[arr[i]][-1]15) # the smallest position need to move arr[i] to correct position16posMap[arr[i]].pop()17if i == idx:18cnt += 119idx -= 120return cnt