0127leetcode刷题5道python

3

题目描述:
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例:
在这里插入图片描述
解答:

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        if not s:return 0
        left = 0
        lookup = set()
        n = len(s)
        max_len = 0
        cur_len = 0
        for i in range(n):
            cur_len += 1
            while s[i] in lookup:
                lookup.remove(s[left])
                left += 1
                cur_len -= 1
            if cur_len > max_len:max_len = cur_len
            lookup.add(s[i])
        return max_len

415

题目描述:
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

解答:

class Solution:
    def addStrings(self, num1: str, num2: str) -> str:
        ret=''
        l1,l2,carry=len(num1)-1,len(num2)-1,0
        while l1>=0 or l2 >=0 or carry>0:
            if l1>=0:
                carry+=int(num1[l1])
                l1-=1
            if l2>=0:
                carry+=int(num2[l2])
                l2-=1
            ret=str(carry%10)+ret
            carry//=10
        return ret

1290

题目描述:
给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。
请你返回该链表所表示数字的 十进制值 。

示例:
在这里插入图片描述
解答:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def getDecimalValue(self, head: ListNode) -> int:
        res=0
        while head:
            res=res*2+head.val
            head=head.next
        return res

1302

题目描述:
给你一棵二叉树,请你返回层数最深的叶子节点的和。

示例:
在这里插入图片描述
解答:

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

class Solution:
    def deepestLeavesSum(self, root: TreeNode) -> int:
        #先把每一层存放到一个列表num中,再把num依次存到res中,最后返回res最后一个列表和
        if root==None:
            return 0
        s=[root]
        num=[]
        res=[]
        while s:
            num=[]
            for i in s:
                num.append(i.val)
            res.append(num)
            for i in range(len(s)):
                node=s.pop(0)
                if node.left:
                    s.append(node.left)
                if node.right:
                    s.append(node.right)
        return sum(res[-1])

1315

题目描述:
给你一棵二叉树,请你返回满足以下条件的所有节点的值之和:
该节点的祖父节点的值为偶数。(一个节点的祖父节点是指该节点的父节点的父节点。)
如果不存在祖父节点值为偶数的节点,那么返回 0 。

示例:
在这里插入图片描述
解答:

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

class Solution:
    def __init__(self):
        self.ans=0

    def sumEvenGrandparent(self, root: TreeNode) -> int:
        if not root:
            return 0
        if root.val%2==0:
            if root.left:
                if root.left.left:
                    self.ans+=root.left.left.val
                if root.left.right:
                    self.ans+=root.left.right.val
            if root.right:
                if root.right.left:
                    self.ans+=root.right.left.val
                if root.right.right:
                    self.ans+=root.right.right.val
        self.sumEvenGrandparent(root.left)
        self.sumEvenGrandparent(root.right)
        return self.ans

猜你喜欢

转载自blog.csdn.net/yeqing1997/article/details/113102672