101. 对称二叉树
对称二叉树 第一反应是用递归做,但是想了一下还是用队列来做逻辑更加清晰,
无非就是 左右节点先入队,出队 判断是否都有节点,且值是否相等,
接着又是
左节点的右子节点与右节点的左子节点
左节点的左子节点与右节点的右子节点
入队,进行比较
class Solution:
def isSymmetric(self, root: TreeNode) -> bool:
if not root or not (root.left or root.right):
return True
que = [root.left,root.right]
while que:
left = que.pop(0)
right = que.pop(0)
if not (left or right):
continue
if not (left and right):
return False
if left.val!=right.val:
return False
que.append(left.left)
que.append(right.right)
que.append(left.right)
que.append(right.left)
return True
219. 存在重复元素 II
哈希一下,存储值对应的上一个位置,判断此位置和上一个位置的距离
class Solution:
def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
dic = defaultdict(int)
for i in range(len(nums)):
if nums[i] in dic and i- dic[nums[i]]<=k:
return True
dic[nums[i]] = i
return False