Maximum increasing subsequence from two arrays DP two arrays. 
IntuitionImagine you have two arrays: one and two. one stores the maximum increasing subarray that you can achive if you last chose a number from nums 1 and two
# Intuition\nImagine you have two arrays: one and two. one stores the maximum increasing subarray that you can achive if you last chose a number from nums 1 and two contains otherwise. \n\nYou keep constructing these two arrays in indicated manner. \n\n# Approach\nKeep updating both one and two. \n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n$$O(n)$$\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n$$O(n)$$\n\n# Code\n```python3 []\nclass Solution:\n    def maxNonDecreasingLength(self, nums1: List[int], nums2: List[int]) -> int:\n        \n        one = [1]\n        two = [1]\n\n        for index in range(1, len(nums1)):\n            if nums1[index] >= nums1[index - 1] and nums1[index] >= nums2[index - 1]:\n                one.append(max(one[-1], two[-1]) + 1)\n            elif nums1[index] >= nums1[index - 1]:\n                one.append(one[-1] + 1)\n            elif nums1[index] >= nums2[index - 1]:\n                one.append(two[-1] + 1)\n            else:\n                one.append(1)\n            \n            if nums2[index] >= nums2[index - 1] and nums2[index] >= nums1[index - 1]:\n                two.append(max(one[len(two) - 1], two[-1]) + 1)\n            elif nums2[index] >= nums2[index - 1]:\n                two.append(two[-1] + 1)\n            elif nums2[index] >= nums1[index - 1]:\n                two.append(one[len(two) - 1] + 1)\n            else:\n                two.append(1)\n        \n        print(one, two)\n\n\n        return max(max(one), max(two))\n        \n                    \n\n```
['Array', 'Dynamic Programming', 'Python3']