public int[] maxNumber(int[] nums1, int[] nums2, int k) {
        if (nums1 == null || nums2 == null || k <= 0) return null;

        int[] max = new int[k];
        for (int i = 0; i <= k; ++i) {
            if (i > nums1.length || k - i > nums2.length) continue;
            int[] res = merge(selectMaxNumber(nums1, i), selectMaxNumber(nums2, k - i));
            if (greater(res, 0, max, 0)) max = res;
        }
        return max;
    }