4
vector<int> nums1, nums2;6
int find(int index, int sp) {10
if (dp[index][sp] != -1) {13
int prev1 = nums1[index - 1];14
int prev2 = nums2[index - 1];19
if (prev1 < nums1[index] && prev2 < nums2[index]) {20
ans = min(ans, find(index + 1, 0));22
if (prev1 < nums2[index] && prev2 < nums1[index]) {23
ans = min(ans, 1 + find(index + 1, 1));25
return dp[index][sp] = ans;27
int minSwap(vector<int> &nums1, vector<int> &nums2) {28
memset(dp, -1, sizeof(dp));29
nums1.insert(nums1.begin(), -1);30
nums2.insert(nums2.begin(), -1);