首页 > 其他分享 >Leedcode-最长特殊序列 Ⅰ

Leedcode-最长特殊序列 Ⅰ

时间:2024-05-31 13:12:06浏览次数:23  
标签:最长 cur res ptr Leedcode fast myli 序列 节点

自己写的:

class Solution:
    # getMinimumDifference 方法接收一个二叉树的根节点 root,并返回树中所有节点值的最小差值
    def getMinimumDifference(self, root: Optional[TreeNode]) -> int:
        # 初始化一个列表用于存储树中的节点值
        myli = []
        # 使用队列来实现层序遍历
        queue = [root]  # 从根节点开始
        while queue:  # 当队列非空时继续遍历
            cur = queue.pop()  # 弹出队列中的最后一个节点
            if cur.left:  # 如果存在左子节点
                queue.append(cur.left)  # 将左子节点添加到队列
            if cur.right:  # 如果存在右子节点
                queue.append(cur.right)  # 将右子节点添加到队列
            myli.append(cur.val)  # 将当前节点的值添加到列表 myli 中
        # 对获取到的所有节点值进行排序
        myli = sorted(myli)
        # 初始化结果 res 为 -1,表示还没有找到任何差值
        res = -1
        # 初始化慢指针和快指针,并设置列表长度
        slow_ptr = 0
        fast_ptr = 1
        n = len(myli)
        # 使用双指针技术遍历排序后的列表,寻找最小差值
        while fast_ptr < n:
            # 如果这是第一次赋值,或者找到了更小的差值,则更新 res
            if res < 0 or abs(myli[fast_ptr] - myli[slow_ptr]) < res:
                res = abs(myli[fast_ptr] - myli[slow_ptr])
            fast_ptr += 1  # 移动快指针
            slow_ptr += 1  # 移动慢指针
        # 返回找到的最小差值
        return res

 

标签:最长,cur,res,ptr,Leedcode,fast,myli,序列,节点
From: https://www.cnblogs.com/yyyjw/p/18224337

相关文章

  • Leedcode-二叉搜索树的最小绝对差
    自己写的:classSolution:#getMinimumDifference方法接收一个二叉树的根节点root,并返回树中所有节点值的最小差值defgetMinimumDifference(self,root:Optional[TreeNode])->int:#初始化一个列表用于存储树中的节点值myli=[]#使......
  • 长序列中Transformers的高级注意力机制总结
    在处理长序列时,Transformers面临着注意力分散和噪音增加等挑战。随着序列长度的增长,每个词元必须与更多词元竞争注意力得分,这会导致注意力分数被稀释。这种稀释可能导致不那么集中和相关的上下文表示,特别是影响彼此距离较远的词元。并且较长的序列更有可能包含不相关或不太相关的......
  • Leetcode 力扣106. 从中序与后序遍历序列构造二叉树 (抖音号:708231408)
    给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。示例1:输入:inorder=[9,3,15,20,7],postorder=[9,15,7,20,3]输出:[3,9,20,null,null,15,7]示例2:输入:inorder=[......
  • Leetcode 力扣105. 从前序与中序遍历序列构造二叉树 (抖音号:708231408)
    给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。示例1:输入:preorder=[3,9,20,15,7],inorder=[9,3,15,20,7]输出:[3,9,20,null,null,15,7]示例2:输入:preorder......
  • 如何看待时间序列与机器学习?
    GPT-4o时间序列与机器学习的关联在于,时间序列数据是一种重要的结构化数据形式,而机器学习则是一种强大的工具,用于从数据中提取有用的模式和信息。在很多实际应用中,时间序列与机器学习可以结合起来,发挥重要作用。首先,时间序列数据具有时序性质,这意味着数据间存在一种时间上的因......
  • P2215 [HAOI2007] 上升序列题解
    题目大意对于一个集合$S$,对于$S$中长度为$m$的子序列$P$,在集合$P$中如果$P_1<P_2<...<P_m$那么我们称$P$为$S$的一个上升序列。如果有多个$P$满足条件我们就输出最小的那个,如果没有完成条件的$P$则输出Impossible。思路对于一个含有$......
  • prufer序列
    \(prufer\)序列大部分树上计数问题,都可以用它的性质来解决。1:从无根树到\(prufer\)序列:重复进行以下操作直到树中剩两个节点。1:找到度数为1的编号最小的节点。2:将其父节点加入队列,将这点删去。则该树的\(prufer\)序列为\(\left\{1,2,1,3,3,1\right\}\)2:从\(prufer\)序列......
  • Jackson序列化为字符串时对指定字段脱敏
    枚举脱敏字段类型及规则importjava.util.function.Function;publicenumTextMaskStrategy{ID_NO("身份证",18,text->"*".repeat(text.length()-4)+text.substring(text.length()-4)),PHONE("手机号",11,text->text.substr......
  • 力扣:5. 最长回文子串
    5.最长回文子串给你一个字符串 s,找到 s 中最长的 回文子串。示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案。示例2:输入:s="cbbd"输出:"bb"提示:1<=s.length<=1000s 仅由数字和英文字母组成classSolution{publicStringlonges......
  • 5. 最长回文子串
    给你一个字符串s,找到s中最长的回文子串。示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案。示例2:输入:s="cbbd"输出:"bb"提示:-1<=s.length<=1000-s仅由数字和英文字母组成......