leetcode-第14周双周赛-1273-删除树节点

Posted 真不知道叫啥好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-第14周双周赛-1273-删除树节点相关的知识,希望对你有一定的参考价值。

题目描述:

 

 

 

 自己的提交:动态规划

class Solution:
    def deleteTreeNodes(self, nodes: int, parent: List[int], value: List[int]) -> int:
        dp = [[0, 0]for _ in range(nodes)]
        p = collections.defaultdict(list)
        for i, v in enumerate(parent):
            p[v].append(i)
        for i in range(nodes - 1, -1, -1):
            dp[i][0] += value[i]
            dp[i][1] += 1
            for j in p[i]:
                dp[i][0] += dp[j][0]
                dp[i][1] += dp[j][1]
            if dp[i][0] == 0:
                dp[i][1] = 0
        return dp[0][1]

另:dfs:

class Solution:
    def deleteTreeNodes(self, nodes: int, parent: List[int], value: List[int]) -> int:
        child = collections.defaultdict(list)
        for idx, par in enumerate(parent):
            child[par].append(idx)
        def get_count_val(i):
            count, val = 1, value[i]
            for c in child[i]:
                tc, tv = get_count_val(c)
                count += tc
                val += tv
            return (count, val) if val else (0, 0)
        return get_count_val(0)[0]

 

以上是关于leetcode-第14周双周赛-1273-删除树节点的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-第14周双周赛-1271-十六进制魔术数字

LeetCode 第 14 场双周赛

LeetCode第 57 场力扣夜喵双周赛(差分数组单调栈) and 第 251 场力扣周赛(状态压缩动规,树的序列化,树哈希,字典树)

LeetCode 第 55 场双周赛 / 第 247 场周赛

LeetCode 第63场双周赛复盘

LeetCode 第 58 场力扣夜喵双周赛(动态规划马拉车算法,前后缀处理)/ 第 253 场力扣周赛(贪心,LIS)