美文网首页
8.19 - hard - 65

8.19 - hard - 65

作者: 健时总向乱中忙 | 来源:发表于2017-08-20 01:39 被阅读0次

321. Create Maximum Number

这题的想法其实比较简单。首先分情况,针对两个数组取k个数,可能的取法是0 k, 1 k-1, 2, k-2 ..., k 0. 针对于每一种取法求出其最大值。

求上面情况的最大值的时候就是比如说在array里取n个数形成最大值也就是从length-n中取一个,然后从index,到length-n-1中取一个,然后依次取就可以了。

class Solution(object):
    def maxNumber(self, nums1, nums2, k):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :type k: int
        :rtype: List[int]
        """
        n, m= len(nums1),len(nums2)
        ret = [0] * k
        for i in range(0, k+1):
            j = k - i
            if i > n or j > m: continue
            left = self.maxSingleNumber(nums1, i)
            right = self.maxSingleNumber(nums2, j)
            num = self.mergeMax(left, right)
            ret = max(num, ret)
        return ret


    def mergeMax(self, nums1, nums2):
        ans = []
        while nums1 or nums2:
            if nums1 > nums2:
                ans += nums1[0],
                nums1 = nums1[1:]
            else:
                ans += nums2[0],
                nums2 = nums2[1:]
        return ans

    def maxSingleNumber(self, nums, selects):
        n = len(nums)
        ret = [-1]
        if selects > n : return ret
        while selects > 0:
            start = ret[-1] + 1 #search start
            end = n-selects + 1 #search end
            ret.append( max(range(start, end), key = nums.__getitem__))
            selects -= 1
        ret = [nums[item] for item in ret[1:]]
        return ret
        
        

相关文章

  • 8.19 - hard - 65

    321. Create Maximum Number 这题的想法其实比较简单。首先分情况,针对两个数组取k个数,可...

  • 8.19 - hard - 70

    336. Palindrome Pairs 基本想出来是怎么做,只是一上来就想去优化,结果想的有点乱,其实最好的方...

  • 8.19 - hard - 64

    317 . Shortest Distance from All Buildings 典型的BFS的题目,BFS可...

  • 8.19 - hard - 69

    335. Self Crossing 一道数学题,考虑一条边被cross的两种情况,然后依次顺延边。

  • 8.19 - hard - 66

    327. Count of Range Sum 中午请人吃饭,结果吃多了,好困,有点坐不动了。这题有segment...

  • 8.19 - hard - 67

    329. Longest Increasing Path in a Matrix 九章算法班里讲过的一道题,用记忆...

  • 8.19 - hard - 71

    340. Longest Substring with At Most K Distinct Characters...

  • 8.19 - hard - 68

    330. Patching Array 又是一道greedy的题目

  • 【案例16】房树人:打破束缚自我开放的规则

    打卡时间:8.19(16/90) 2. 打卡人:65-晕晕 3. 【案例16】房树人:打破束缚自我开放的规则 ...

  • 手绘05

    景观手绘, 8.18 8.19

网友评论

      本文标题:8.19 - hard - 65

      本文链接:https://www.haomeiwen.com/subject/ozyxdxtx.html