My readable Python solution
After struggling for awhile, i came with this solution and i think most of the solutions are similar.\n If we will make an array of length k, we can take some e
* After struggling for awhile, i came with this solution and i think most of the solutions are similar.\n* If we will make an array of length k, we can take some elements from nums1, and complete rest from nums2.\n* Logic is simple. Get the max possible array from the targeted array in makeArr function.\n* Merge two array one by one to get merged max array.\n* Return max merged array from choices.\n```\nclass Solution:\n    def maxNumber(self, nums1, nums2, k):\n        def merge(arr1, arr2):\n            res, i, j = [], 0, 0\n            while i < len(arr1) and j < len(arr2):\n                if arr1[i:] >= arr2[j:]:\n                    res.append(arr1[i])\n                    i += 1\n                else: \n                    res.append(arr2[j])\n                    j += 1\n            if i < len(arr1): res += arr1[i:]\n            elif j < len(arr2): res += arr2[j:]\n            return res     \n        \n        def makeArr(arr, l):\n            i, res = 0, []\n            for r in range(l - 1, -1, -1):\n                num, i = max(arr[i:-r] or arr[i:])\n                i = -i + 1\n                res.append(num)\n            return res\n        \n        nums1, nums2, choices = [(num, -i) for i, num in enumerate(nums1)], [(num, -i) for i, num in enumerate(nums2)], []\n        for m in range(k + 1):\n            if m > len(nums1) or k - m > len(nums2): continue\n            arr1, arr2 = makeArr(nums1, m), makeArr(nums2, k - m)  \n            choices.append(merge(arr1, arr2))\n        return max(choices)\n```
[]