规范格式

This commit is contained in:
YDZ
2020-08-07 15:50:06 +08:00
parent 854a339abc
commit 4e11f4028a
1438 changed files with 907 additions and 924 deletions

View File

@ -0,0 +1,34 @@
package leetcode
import "strconv"
func calPoints(ops []string) int {
stack := make([]int, len(ops))
top := 0
for i := 0; i < len(ops); i++ {
op := ops[i]
switch op {
case "+":
last1 := stack[top-1]
last2 := stack[top-2]
stack[top] = last1 + last2
top++
case "D":
last1 := stack[top-1]
stack[top] = last1 * 2
top++
case "C":
top--
default:
stack[top], _ = strconv.Atoi(op)
top++
}
}
points := 0
for i := 0; i < top; i++ {
points += stack[i]
}
return points
}

View File

@ -0,0 +1,47 @@
package leetcode
import (
"fmt"
"testing"
)
type question682 struct {
para682
ans682
}
// para 是参数
// one 代表第一个参数
type para682 struct {
one []string
}
// ans 是答案
// one 代表第一个答案
type ans682 struct {
one int
}
func Test_Problem682(t *testing.T) {
qs := []question682{
question682{
para682{[]string{"5", "2", "C", "D", "+"}},
ans682{30},
},
question682{
para682{[]string{"5", "-2", "4", "C", "D", "9", "+", "+"}},
ans682{27},
},
}
fmt.Printf("------------------------Leetcode Problem 682------------------------\n")
for _, q := range qs {
_, p := q.ans682, q.para682
fmt.Printf("【input】:%v 【output】:%v\n", p, calPoints(p.one))
}
fmt.Printf("\n\n\n")
}

View File

@ -0,0 +1,60 @@
# [682. Baseball Game](https://leetcode.com/problems/baseball-game/)
## 题目
You're now a baseball game point recorder.
Given a list of strings, each string can be one of the 4 following types:
1. Integer (one round's score): Directly represents the number of points you get in this round.
2. "+" (one round's score): Represents that the points you get in this round are the sum of the last two valid round's points.
3. "D" (one round's score): Represents that the points you get in this round are the doubled data of the last valid round's points.
4. "C" (an operation, which isn't a round's score): Represents the last valid round's points you get were invalid and should be removed.
Each round's operation is permanent and could have an impact on the round before and the round after.
You need to return the sum of the points you could get in all the rounds.
Example 1:
```c
Input: ["5","2","C","D","+"]
Output: 30
Explanation:
Round 1: You could get 5 points. The sum is: 5.
Round 2: You could get 2 points. The sum is: 7.
Operation 1: The round 2's data was invalid. The sum is: 5.
Round 3: You could get 10 points (the round 2's data has been removed). The sum is: 15.
Round 4: You could get 5 + 10 = 15 points. The sum is: 30.
```
Example 2:
```c
Input: ["5","-2","4","C","D","9","+","+"]
Output: 27
Explanation:
Round 1: You could get 5 points. The sum is: 5.
Round 2: You could get -2 points. The sum is: 3.
Round 3: You could get 4 points. The sum is: 7.
Operation 1: The round 3's data is invalid. The sum is: 3.
Round 4: You could get -4 points (the round 3's data has been removed). The sum is: -1.
Round 5: You could get 9 points. The sum is: 8.
Round 6: You could get -4 + 9 = 5 points. The sum is 13.
Round 7: You could get 9 + 5 = 14 points. The sum is 27.
```
Note:
- The size of the input list will be between 1 and 1000.
- Every integer represented in the list will be between -30000 and 30000.
## 题目大意
这道题是模拟题,给一串数字和操作符。出现数字就直接累加,出现 "C" 就代表栈推出一个元素,相应的总和要减去栈顶的元素。出现 "D" 就代表把前一个元素乘以 2就得到当前的元素值。再累加。出现 "+" 就代表把前 2 个值求和,得到当前元素的值,再累积。
## 解题思路
这道题用栈模拟即可。