Short python code with explanation (100% faster)
Step1: Create maximum numbers individually from nums1 and nums2. Store \'j\' digit max numbers in dictionary. (say dp1 and dp2)  \nStep2: Combine dp1[i] + dp2[k
Step1: Create maximum numbers individually from nums1 and nums2. Store \'j\' digit max numbers in dictionary. (say dp1 and dp2)  \nStep2: Combine dp1[i] + dp2[k-i]  to create maximum \'k\' digit number\n\n```\nclass Solution(object):\n    def maxNumber(self, nums1, nums2, k):\n        def maximize(nums,length):\n            dp,i = {length:nums},0\n            while (length):\n                while (i+1<length and nums[i]>=nums[i+1]): i+=1\n                nums,length = nums[:i]+nums[i+1:],length-1\n                dp[length] = nums\n                if i>0: i-=1\n            return dp\n        m,n,result = len(nums1),len(nums2),[]\n        dp1,dp2 = maximize(nums1,m),maximize(nums2,n)\n        for i in range(min(m+1,k+1)):\n            if k-i not in dp2: continue\n\t\t\tresult = max(result,[max(dp1[i],dp2[k-i]).pop(0) for _ in range(k)])\n        return result\n```
[]