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