Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

3组:402

4组:114
4组:114 [114-二叉树展开为链表](details/114-二叉树展开为链表.md)

#### 2018.10.12 第5次

Expand All @@ -30,7 +30,7 @@

3组:70 [70-爬楼梯](details/70-爬楼梯.md)

4组:892
4组:892 [892-三维形体的表面积](details/892-三维形体的表面积.md)

#### 2018.09.21 第4次

Expand Down
61 changes: 61 additions & 0 deletions details/114- 二叉树展开为链表.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@

114- 二叉树展开为链表





```
给定一个二叉树,原地将它展开为链表。

例如,给定二叉树

1
/ \
2 5
/ \ \
3 4 6
将其展开为:

1
\
2
\
3
\
4
\
5
\
6


```
swift: 解题思路
将最底层左子节点放到父节点的有节点,同时将old 右节点拼接到新的右节点的最底部的右节点上,以此类推一层一层向上
```


func flatten(_ root: TreeNode?) {
if root == nil{
return
}else{
flatten(root?.left)
flatten(root?.right)
if ((root?.left) != nil) {
var newNode = root?.right
root?.right = root?.left
root?.left = nil
if (newNode != nil){
var rTree = root

while (rTree?.right != nil){
rTree = rTree?.right
}
rTree?.right = newNode
}

}
}
}
```
65 changes: 65 additions & 0 deletions details/892-三维形体的表面积.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@

892. 三维形体的表面积
```
在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。

每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。

返回结果形体的总表面积。



示例 1:

输入:[[2]]
输出:10
示例 2:

输入:[[1,2],[3,4]]
输出:34
示例 3:

输入:[[1,0],[0,2]]
输出:16
示例 4:

输入:[[1,1,1],[1,0,1],[1,1,1]]
输出:32
示例 5:

输入:[[2,2,2],[2,1,2],[2,2,2]]
输出:46


提示:

1 <= N <= 50
0 <= grid[i][j] <= 50


```
swift: 解题思路
每一个方框6个面相邻增加一个,会增加6个面,同时因为相邻会有两个接触则减去2两个,横方向和竖方向相同,
```


func surfaceArea(_ grid: [[Int]]) -> Int {

var sum = 0

for i in 0..<grid.count{
for j in 0..<grid[i].count{
if grid[i][j] != 0{
sum = sum + grid[i][j] * 4 + 2
}
if i >= 1{
sum = sum - min(grid[i][j], grid[i - 1][j]) * 2
}
if j >= 1{
sum = sum - min(grid[i][j], grid[i ][j - 1]) * 2
}
}
}
return sum
}
```