Easy to read DP: beats 93% and 83%
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity: $O(n)$\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity: $O(1)$\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```\nclass Solution:\n    def maxNonDecreasingLength(self, nums1: List[int], nums2: List[int]) -> int:\n        \n        n = len(nums1)\n\n        rep: int = 1\n\n        current1: int = 1\n        current2: int = 1\n\n        for i in range(1, n):\n            \n            # update current 1\n            cur1_cur1 = current1 + 1 if nums1[i] >= nums1[i-1] else 1\n            cur1_cur2 = current2 + 1 if nums1[i] >= nums2[i-1] else 1\n\n            # update current 2\n            cur2_cur1 = current1 + 1 if nums2[i] >= nums1[i-1] else 1\n            cur2_cur2 = current2 + 1 if nums2[i] >= nums2[i-1] else 1\n\n            # update rep\n            current1 = max(cur1_cur1, cur1_cur2)\n            current2 = max(cur2_cur1, cur2_cur2)\n            rep = max(max(current1, current2), rep)\n\n        return rep\n\n\n            \n```
['Dynamic Programming', 'Python3']