Skip to content

Commit 5556806

Browse files
committed
add new files
1 parent b61dba0 commit 5556806

File tree

3 files changed

+120
-0
lines changed

3 files changed

+120
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package main
2+
3+
import "math"
4+
5+
/**
6+
只能进行两次交易,因此一共有四个状态,互相之间转移
7+
*/
8+
9+
func maxProfit(prices []int) int {
10+
b1, b2 := math.MinInt32, math.MinInt32
11+
s1, s2 := 0, 0
12+
for i := 0; i < len(prices); i++ {
13+
b1 = max(b1, -prices[i])
14+
s1 = max(s1, b1+prices[i])
15+
b2 = max(b2, s1-prices[i])
16+
s2 = max(s2, b2+prices[i])
17+
}
18+
return s2
19+
}
20+
21+
func max(x, y int) int {
22+
if x > y {
23+
return x
24+
}
25+
return y
26+
}

130. Surrounded Regions.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package main
2+
3+
/**
4+
TODO not AC yet
5+
*/
6+
func solve(board [][]byte) {
7+
l1 := len(board)
8+
if l1 == 0 {
9+
return
10+
}
11+
l2 := len(board[0])
12+
if l2 == 0 {
13+
return
14+
}
15+
//初始化访问数组
16+
visit := make([][]bool, l1)
17+
for i := 0; i < l1; i++ {
18+
visit[i] = make([]bool, l2)
19+
}
20+
for i := 0; i < l1; i++ {
21+
for j := 0; j < l2; j++ {
22+
if !visit[i][j] {
23+
helper(board, visit, i, j)
24+
}
25+
}
26+
}
27+
}
28+
29+
func helper(board [][]byte, visit [][]bool, x, y int) bool {
30+
if x < 0 || x >= len(board) || y < 0 || y >= len(board[0]) {
31+
return false
32+
}
33+
if visit[x][y] {
34+
return board[x][y] != 'O'
35+
}
36+
visit[x][y] = true
37+
flag := true
38+
if board[x][y] == 'O' {
39+
board[x][y] = 'X'
40+
flag = helper(board, visit, x+1, y) && helper(board, visit, x-1, y) && helper(board, visit, x, y+1) && helper(board, visit, x, y-1)
41+
if flag == false {
42+
board[x][y] = 'O'
43+
}
44+
}
45+
return flag
46+
}

445. Add Two Numbers II.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package main
2+
3+
/**
4+
节点顺序入栈
5+
*/
6+
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
7+
len1, len2 := 0, 0
8+
for tmp := l1; tmp != nil; tmp = tmp.Next {
9+
len1++
10+
}
11+
for tmp := l2; tmp != nil; tmp = tmp.Next {
12+
len2++
13+
}
14+
if len1 < len2 {
15+
l1, l2, len1, len2 = l2, l1, len2, len1
16+
}
17+
s1, s2 := make([]*ListNode, 0, len1), make([]*ListNode, 0, len2)
18+
for tmp := l1; tmp != nil; tmp = tmp.Next {
19+
s1 = append(s1, tmp)
20+
}
21+
for tmp := l2; tmp != nil; tmp = tmp.Next {
22+
s2 = append(s2, tmp)
23+
}
24+
25+
var head ListNode
26+
add, i, t := 0, 0, 0
27+
for i = 1; i <= len1; i++ {
28+
if i <= len2 {
29+
t = s1[len1-i].Val + s2[len2-i].Val + add
30+
} else {
31+
t = s1[len1-i].Val + add
32+
}
33+
add = t / 10
34+
node := &ListNode{
35+
t % 10,
36+
head.Next,
37+
}
38+
head.Next = node
39+
}
40+
if add > 0 {
41+
node := &ListNode{
42+
add,
43+
head.Next,
44+
}
45+
head.Next = node
46+
}
47+
return head.Next
48+
}

0 commit comments

Comments
 (0)