Leetcode 3068. Find the Maximum Sum of Node Values

  • [Leetcode 3068. Find the Maximum Sum of Node Values](#Leetcode 3068. Find the Maximum Sum of Node Values)
    • [1. 解题思路](#1. 解题思路)
    • [2. 代码实现](#2. 代码实现)

1. 解题思路

这一题虽然标记为一道hard的题目,但其实就是一个脑筋急转弯的题目。

我们只需要想明白一点即可:

  • 由于异或操作满足x^y^y = x,对于一棵联通树,我们总可以通过有限次对相邻边地操作,使得任意两点(u, v)转变为(u^z, v^z),而其他所有的节点都不发生变化。

因此,我们只需要计算出所有点如果进行异或操作之后可以得到的改变量,然后将其从大到小进行排序,两两配对之后考察最大能够获得多少累积增长即可。

2. 代码实现

给出python代码实现如下:

python 复制代码
class Solution:
    def maximumValueSum(self, nums: List[int], k: int, edges: List[List[int]]) -> int:
        delta = sorted([(x ^ k) - x for i, x in enumerate(nums)], reverse=True)
        i, n = 0, len(delta)
        ans = sum(nums)
        while i+1 < n and delta[i] + delta[i+1] > 0:
            ans += delta[i] + delta[i+1]
            i += 2
        return ans

提交代码评测得到:耗时972ms,占用内存28MB。

相关推荐
Espresso Macchiato7 天前
Leetcode 3389. Minimum Operations to Make Character Frequencies Equal
动态规划·leetcode hard·分类讨论·leetcode 3389·leetcode周赛428
不修×蝙蝠20 天前
数据结构--二叉树删除树节点
数据结构·二叉树··删除·删除节点
Espresso Macchiato21 天前
Leetcode 3373. Maximize the Number of Target Nodes After Connecting Trees II
动态规划·leetcode hard·leetcode 3373·leetcode周赛426·树的遍历
_whitepure1 个月前
常用数据结构详解
java·链表····队列·稀疏数组
Espresso Macchiato1 个月前
Leetcode 3352. Count K-Reducible Numbers Less Than N
动态规划·二进制·leetcode hard·leetcode 3352·leetcode周赛423
一直学习永不止步2 个月前
LeetCode题练习与总结:扁平化嵌套列表迭代器--341
java·leetcode·迭代器···队列·深度优先搜索
数据结构和算法2 个月前
数据结构——笛卡尔树详解
数据结构··二叉搜索树··笛卡尔树
IT规划师2 个月前
数据结构 - 树,三探之代码实现
数据结构·
韶瑜不会写代码2 个月前
7-1 玩转二叉树
c语言·数据结构·算法·
IT规划师2 个月前
数据结构 - 树,再探
数据结构·