日刷leetcode--简单版(四)
返回总目录
88. 合并两个有序数组
题目描述
解题思路
- 采用双指针,从前往后,如果nums2中当前值小于nums1中的值,这插入并后移
示例代码
1 | func merge(nums1 []int, m int, nums2 []int, n int) []int { |
运行结果
执行用时 :4 ms, 在所有 Go 提交中击败了73.14%的用户
内存消耗 :3.6 MB, 在所有 Go 提交中击败了84.42%的用户
100. 相同的树
题目描述
解题思路
- 有两中情况下可直接返回
- p与q同时为空时为
True
- p或q只有一个为空时
False
- p与q同时为空时为
- p与q同时不为空是,判断其Val,同时递归判断两个的Left与Right
示例代码
1 | func isSameTree(p *TreeNode, q *TreeNode) bool { |
运行结果
执行用时 :0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗 :2.1 MB, 在所有 Go 提交中击败了87.07%的用户
101. 对称二叉树
题目描述
解题思路–递归
- 这道题与上一题很像,上一题是要求树完全相等,此题是要求对称
- 两树相等时为
Left == Left
,Right == Right
,而对称则是Left == Right
,Right == Left
示例代码
1 | func isSymmetric(root *TreeNode) bool { |
运行结果
执行用时 :0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗 :3 MB, 在所有 Go 提交中击败了60.14%的用户
解题思路–迭代
- 迭代我也不是很懂,就摘抄了一个,配合注释看一看
示例代码
1 | func isSymmetric(root *TreeNode) bool { // 迭代方法,bfs |
运行结果
执行用时 :0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗 :3.2 MB, 在所有 Go 提交中击败了5.80%的用户
104. 二叉树的最大深度
题目描述
解题思路
- 使用递归查看当前值是否为空,为空则返回0,接受到递归返回的0就加1
- 毕竟树的左右,看那边更大,返回大的一边。
示例代码
1
2
3
4
5
6
7
8
9
10
11func maxDepth(root *TreeNode) int {
if root == nil {
return 0
}
Ll := maxDepth(root.Left) + 1
Lr := maxDepth(root.Right) + 1
if Ll > Lr {
return Ll
}
return Lr
}运行结果
执行用时 :8 ms, 在所有 Go 提交中击败了79.37%的用户
内存消耗 :4.4 MB, 在所有 Go 提交中击败了61.74%的用户
107. 二叉树的层次遍历 II
题目描述
解题思路
- 看下面代码注释
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30func levelOrderBottom(root *TreeNode) (res [][]int) {
if root == nil {
return
}
var node []*TreeNode
node = append(node, root)
for len(node) > 0 { // node不为0就一直循环
len := len(node)
var tmp []int
for i:= 0; i < len; i++ {
// 循环次数等于每一层的节点数,每次都取第一个node,因为下面会将第一个node删除
indexNode := node[0]
node = node[1:] // 将第一个node删除
tmp = append(tmp, indexNode.Val) // 记录节点值
if indexNode.Left != nil { // 如果左子树不为空,将左子树添加node
node = append(node, indexNode.Left)
}
if indexNode.Right != nil { // 如果右边树不为空,将右子树添加node
node = append(node, indexNode.Right)
}
}
res = append(res, tmp)
}
var res1 [][]int
for i:= len(res)-1; i >= 0; i-- {
res1 = append(res1, res[i])
}
return res1
}运行结果
执行用时 :4 ms, 在所有 Go 提交中击败了85.64%的用户
内存消耗 :6 MB, 在所有 Go 提交中击败了87.36%的用户
对树不是很了解,树相关题目后面再做
118. 杨辉三角
题目描述
解题思路
示例代码
1 | func generate(numRows int) [][]int { |
运行结果
执行用时 :0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗 :2.3 MB, 在所有 Go 提交中击败了47.54%的用户
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 墨殇的技术博客!
评论
GitalkValine