Skip to content

Commit 0fef157

Browse files
committed
[0213]ADD:LC-448/32
1 parent c945d88 commit 0fef157

3 files changed

+93
-0
lines changed

readme.md

+4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
[[20210212]119. 杨辉三角 II-Easy](动态规划/119.%20杨辉三角%20II-Easy.md)
1212
[[20210212]236. 二叉树的最近公共祖先-Medium](树/236.%20二叉树的最近公共祖先-Medium.md)
1313
[[20210212]863. 二叉树中所有距离为 K 的结点-Medium](回溯法/BFS/863.%20二叉树中所有距离为%20K%20的结点-Medium.md)
14+
[[20210213]448. 找到所有数组中消失的数字-Easy](数组/448.%20找到所有数组中消失的数字-Easy.md)
15+
[[20210213]剑指 Offer 32 - III. 从上到下打印二叉树 III-Medium](树/剑指%20Offer%2032%20-%20III.%20从上到下打印二叉树%20III-Medium.md)
1416
## 2021.01
1517
[[20210104]1688. 比赛中的配对次数-Easy](回溯法/1688.%20比赛中的配对次数-Easy.md)
1618
[[20210105]830. 较大分组的位置-Easy](字符串/830.%20较大分组的位置-Easy.md)
@@ -112,6 +114,7 @@
112114
[897. 递增顺序查找树 - Easy](./树/897.%20递增顺序查找树%20-%20Easy.md)
113115
[1161. 最大层内元素和-Medium](1161.%20最大层内元素和-Medium.md)
114116
[剑指 Offer 26. 树的子结构-Medium](./树/剑指%20Offer%2026.%20树的子结构-Medium.md)
117+
[剑指 Offer 32 - III. 从上到下打印二叉树 III-Medium](树/剑指%20Offer%2032%20-%20III.%20从上到下打印二叉树%20III-Medium.md)
115118
[剑指 Offer 54. 二叉搜索树的第k大节点 - Easy](./树/剑指%20Offer%2054.%20二叉搜索树的第k大节点%20-%20Easy.md)
116119

117120

@@ -120,6 +123,7 @@
120123
[18. 四数之和-Medium](双指针/18.%20四数之和-medium.md)
121124
[34. 在排序数组中查找元素的第一个和最后一个位置-Medium](数组/34.%20在排序数组中查找元素的第一个和最后一个位置-Medium.md)
122125
[189. 旋转数组-Medium](数组/189.%20旋转数组-Medium.md)
126+
[448. 找到所有数组中消失的数字-Easy](数组/448.%20找到所有数组中消失的数字-Easy.md)
123127
[560. 和为K的子数组-Medium](数组/560.%20和为K的子数组-Medium.md)
124128
[611. 有效三角形的个数 - Medium](./双指针/611.%20有效三角形的个数%20-%20Medium.md)
125129
[845. 数组中的最长山脉-Medium](双指针/845.%20数组中的最长山脉-Medium)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# [Description](https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array)
2+
给定一个范围在  1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。
3+
4+
找到所有在 [1, n] 范围之间没有出现在数组中的数字。
5+
6+
您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。
7+
8+
示例:
9+
```python
10+
输入:
11+
[4,3,2,7,8,2,3,1]
12+
13+
输出:
14+
[5,6]
15+
```
16+
17+
# Solution
18+
- 由于题目要求不开辟额外空间,所以考虑将nums数组当作哈希表:
19+
- 由于 (n = 数组大小),所以可将nums的index作为某数是否出现的key。在遍历过程中,若已出现,则将其value += n。最后遍历找出value<=n的index即可
20+
- 时间复杂度:$O(n)$
21+
- 空间复杂度:$O(1)$
22+
23+
```python
24+
class Solution:
25+
def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
26+
n = len(nums)
27+
for num in nums:
28+
x = (num - 1) % n
29+
nums[x] += n
30+
31+
ret = [i + 1 for i, num in enumerate(nums) if num <= n]
32+
return ret
33+
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# [Description](https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof)
2+
3+
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
4+
5+
 
6+
例如:
7+
给定二叉树: [3,9,20,null,null,15,7],
8+
```python
9+
3
10+
/ \
11+
9 20
12+
/ \
13+
15 7
14+
返回其层次遍历结果:
15+
16+
[
17+
[3],
18+
[20,9],
19+
[15,7]
20+
]
21+
 
22+
```
23+
提示:
24+
25+
- 节点总数 <= 1000
26+
27+
28+
# Solution
29+
```python
30+
class Solution:
31+
def levelOrder(self, root: TreeNode) -> List[List[int]]:
32+
if not root:
33+
return []
34+
else:
35+
reverse = False
36+
ans, stack = [], [root]
37+
while stack:
38+
layer_node, layer_val = [], []
39+
while stack:
40+
current = stack.pop(0)
41+
if reverse:
42+
layer_val.insert(0, current.val)
43+
else:
44+
layer_val.append(current.val)
45+
46+
if current.left:
47+
layer_node.append(current.left)
48+
if current.right:
49+
layer_node.append(current.right)
50+
51+
reverse = not reverse
52+
stack.extend(layer_node)
53+
ans.append(layer_val)
54+
55+
return ans
56+
```

0 commit comments

Comments
 (0)