作为要准备踏入码农行业的人来说,要准备校招,怎么能不去刷刷LeetCode呢?
88. 合并两个有序数组
-
题目要求:
-给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
说明:
初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 -
示例:
输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
输出: [1,2,2,3,5,6]
- 分析:
利用库函数直接排序
class Solution:
def merge(self, nums1, m, nums2, n):
for i in range(n):
nums1[m] =nums2[i]
m+=1
nums1.sort()
100. 相同的树
- 题目要求:
给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
- 示例:
输入: 1 1
/ \ / \
2 3 2 3
[1,2,3], [1,2,3]
输出: true
示例 2:
输入: 1 1
/ \
2 2
[1,2], [1,null,2]
输出: false
示例 3:
输入: 1 1
/ \ / \
2 1 1 2
[1,2,1], [1,1,2]
输出: false
- 分析:
递归依次判断是否相同
class Solution:
def isSameTree(self, p, q):
if p==None and q ==None:
return True
if p != None and q != None and p.val == q.val:
return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)
else:
return False
101. 对称二叉树
-
题目要求:
给定一个二叉树,检查它是否是镜像对称的。 -
示例:
二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
[1,2,2,null,3,null,3] 则不是镜像对称的:
1
/ \
2 2
\ \
3 3
- 分析:
根据上一题可以创建两个相同的树然后判断是否对称
class Solution:
def isSymmetric(self, root):
return self.a(root,root)
def a(self,q,p):
if p == None and q == None:
return True
if p == None or q == None:
return False
if p.val==q.val:
return self.a(p.left, q.right) and self.a(p.right, q.left)
return False