没写出来 leetcode 1187. 使数组严格递增

来自博客

他们要挨多少板子才能成角儿啊!

from functools import lru_cache
class Solution:
    def makeArrayIncreasing(self, arr1: List[int], arr2: List[int]) -> int:
        l1, l2 = len(arr1), len(arr2)
        arr2.sort()
        
        @lru_cache(None)
        def dfs(i1, pre):
            if i1 >= l1:
                return 0
            i2 = bisect.bisect(arr2, pre)
            return min(1 + dfs(i1 + 1, arr2[i2]) if i2 < l2 else l2+1,\
                       dfs(i1 + 1,arr1[i1]) if pre < arr1[i1] else l2+1)
        
        res = dfs(0,float("-inf"))
        return -1 if res > l2 else res

牛逼,换或不换,全部遍历,用缓存不超时,不用超时。
还有个动态规划。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页