Make Array Strictly Increasing LeetCode solution in Python
1class Solution:2def makeArrayIncreasing(self, arr1: List[int], arr2: List[int]) -> int:3n1, n2, dp = len(arr1), len(arr2), {}4arr2.sort()56def solve(i, j, prev):78if i == n1:9return 01011if (i, j, prev) in dp:12return dp[(i, j, prev)]1314k = bisect.bisect_right(arr2[j:], prev) + j1516ans = float("inf") if k == n2 else solve(i + 1, k + 1, arr2[k]) + 11718if arr1[i] > prev:19ans = min(ans, solve(i + 1, j, arr1[i]))2021dp[(i, j, prev)] = ans2223return ans2425ans = solve(0, 0, -float("inf"))2627return ans if ans != float("inf") else -1