【问题标题】:Keys Not Defined For Dictionary未为字典定义键
【发布时间】:2020-11-22 09:14:43
【问题描述】:

我正在尝试解决 LeetCode 上的 Maximum Length Of Pair Chain 问题。 我的解决方案被记忆化部分困住了。

在这里,我尝试存储一个二维元组,它是点的组合,作为字典的键。 一切正常,除了我无法访问字典的键。 连字典的内容都打印得很好。

我们将不胜感激。

from collections import defaultdict
class Solution:
def findLongestChain(self, pairs: List[List[int]]) -> int:
    if len(pairs)==1:
        return 1
    
    d = defaultdict(int)
    for i in range(len(pairs)):
        pairs[i] =tuple(pairs[i])
    pairs = tuple(pairs)
    
    def recur_t(A,arr):
        if len(arr)==0:
            return len(A)
        if arr in d:
            print("Hello")
            return d[arr]
        else:
            maxi =len(A)
            for i in range(len(arr)):
                rem_lst = arr[:i]+arr[i+1:]
                if A==[]:
                    maxi = max (recur_t(A+[arr[i]],rem_lst),maxi)
                elif arr[i][0]<=A[-1][1]:
                    pass
                elif arr[i][0]>A[-1][1]:
                    maxi = max (recur_t(A+[arr[i]],rem_lst),maxi)
            print (arr)
            d[arr] = maxi
            return maxi
    
    
    return(recur_t([],pairs))

【问题讨论】:

  • 你没有说这是什么语言。我添加了 Python 标签作为猜测,如果我错了,请edit

标签: python dictionary memoization


【解决方案1】:

目前看起来不错!

  • 为了解决这个问题,我们将排序、检查间隔的末尾并计数:
class Solution:
    def findLongestChain(self, pairs):
        cur_end = float('-inf')
        longest = 0
        for pair in sorted(pairs, key=lambda x: x[1]):
            if cur_end < pair[0]:
                cur_end = pair[1]
                longest += 1
        return longest
  • O(N Log N) 排序的时间复杂度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    相关资源
    最近更新 更多