Minimum Swaps To Make Sequences Increasing LeetCode solution in Python
1# Runtime: 1198 ms (Top 36.1%) | Memory: 149.20 MB (Top 27.6%)234class Solution:5def minSwap(self, nums1: List[int], nums2: List[int]) -> int:6dp = [[-1] * 2 for i in range(len(nums1))]78def solve(prev1, prev2, i, swaped):9if i >= len(nums1):10return 011if dp[i][swaped] != -1:12return dp[i][swaped]1314ans = 2**311516# No Swap17if nums1[i] > prev1 and nums2[i] > prev2:18ans = solve(nums1[i], nums2[i], i + 1, 0)1920# Swap21if nums1[i] > prev2 and nums2[i] > prev1:22ans = min(ans, 1 + solve(nums2[i], nums1[i], i + 1, 1))2324dp[i][swaped] = ans25return ans2627return solve(-1, -1, 0, 0)