Hard
Constructing Two Increasing Arrays — Python
Full explanation · Time O(m * n) · Space O(min(m, n))
# Time: O(m * n)
# Space: O(min(m, n))
# dp
class Solution(object):
def minLargest(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: int
"""
if len(nums1) < len(nums2):
nums1, nums2 = nums2, nums1
dp = [float("inf")]*(len(nums2)+1)
dp[0] = 0
for i in xrange(len(nums1)+1):
for j in xrange(len(nums2)+1):
if not i and not j:
continue
curr = float("inf")
if i-1 >= 0:
curr = min(curr, dp[j]+(2 if dp[j]%2 == nums1[i-1]%2 else 1))
if j-1 >= 0:
curr = min(curr, dp[j-1]+(2 if dp[j-1]%2 == nums2[j-1]%2 else 1))
dp[j] = curr
return dp[-1]