leetcode-4.15[105. 从前序与中序遍历序列构造二叉树、1344. 时钟指针的夹角、908. 最小差值 I](python解法)

题目1在这里插入图片描述

解法1:

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

class Solution:
    def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:
        if not preorder:
            return None
        root = TreeNode(preorder[0]) # 取出前序遍历的第一个元素值,创建一个节点
        loc = inorder.index(preorder[0]) # 找出该元素值在中序遍历中的下标(根据中序遍历左根右,可以确定二叉树左子数的个数)
        root.left = self.buildTree(preorder[1 : loc + 1], inorder[ : loc]) # 根据上面求出的左子数的个数(根的下标)构建递归条件
        root.right = self.buildTree(preorder[loc+1 : ], inorder[loc+1: ])
        return root

题目2

在这里插入图片描述

题解2

class Solution:
    def angleClock(self, hour: int, minutes: int) -> float:
        hour_angle = (hour%12)*30 + (minutes/60)*30
        minutes_angle = minutes/60*360
        return min(abs(hour_angle - minutes_angle), 360-abs(hour_angle - minutes_angle))

题目3

在这里插入图片描述

题解3

class Solution:
    def smallestRangeI(self, A: List[int], K: int) -> int:
        """
            A中的最大值-A中的最小值-2*k,因为为了最小差,只能将最大值-k ,最小值+k,如果最大值任大于最小值,
        则不够减,返回这个值,如果最大值任小于等于最小值,则在[-k,k]够减,返回0即可
        """
        return max(max(A) - min(A) - 2*K, 0)

附上题目链接:

题目1链接
题目2链接
题目3链接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值