python中的全局变量的使用

由于在刷题的时候有一个这样的需求,需要在dfs中反复修改一个变量值,这个时候想起来使用global来进行全局变量的修改。但是我只用过改一次的情况,迭代用global修改全局变量的方法一直我都没有成功。一直以来我都是使用list这种不会在迭代中产生歧义的方法来修改。

今天我想到了一个更好的使用全局变量的方法,那就是把全局变量存在self里,这样在class里函数中都可以访问self里的变量。尤其刷leetcode时这样很方便。


# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:

    
    def maxPathSum(self, root: TreeNode) -> int:
        if not root:
            return 0
        self.path = root.val
        def dfs(node): 
            if node.left and node.right:
                left = dfs(node.left)
                right = dfs(node.right)
                res = node.val+max(left,right,0)

                max_path = node.val+max(left,0)+max(right,0)

                self.path = max_path if max_path>self.path else self.path
                return res
            elif node.left and (not node.right):
                res = node.val+max(dfs(node.left),0)
                
                self.path = res if res>self.path else self.path

                return res
            elif node.right and (not node.left):
                res = node.val+max(dfs(node.right),0)
                self.path = res if res>self.path else self.path
                return res
            else:
                res = node.val
                self.path = res if res>self.path else self.path
                return node.val
        dfs(root)
        return self.path

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值