682. Juego de béisbol: problemas simples de simulación

Llega oferta, cava amigos a recoger! Estoy participando en el evento de registro de reclutamiento de primavera de 2022, haga clic para ver los detalles del evento .

Tema Descripción

Este es un 682. Juego de béisbol en LeetCode en dificultad Fácil .

Etiqueta: "simulación"

Ahora eres el anotador de un juego especial de béisbol. El juego consta de varias rondas, y los puntajes de las rondas anteriores pueden afectar los puntajes de las rondas posteriores.

Cuando comenzó el juego, el registro estaba en blanco. Obtendrá una lista de cadenas que registran las operaciones ops, donde O pags s [ I ] operaciones[i] es el número que necesita registrar I I operación,opssiga las siguientes reglas:

  1. Entero x: indica nuevos puntos ganados en esta rondax
  2. "+"- Indica que la nueva puntuación obtenida en esta ronda es la suma de las dos puntuaciones anteriores. Los datos del ítem garantizan que siempre hay dos puntajes válidos que preceden a esta acción cuando se registra.
  3. "D"- Indica que la nueva puntuación obtenida en esta ronda es el doble de la puntuación anterior. Los datos del elemento garantizan que siempre hay una puntuación válida antes de que se registre esta acción.
  4. "C"- Indica que la puntuación anterior no era válida y se eliminó del registro. Los datos del elemento garantizan que siempre hay una puntuación válida antes de que se registre esta acción.

Por favor devuelva la suma de todos los puntajes en el registro.

Ejemplo 1:

输入:ops = ["5","2","C","D","+"]

输出:30

解释:
"5" - 记录加 5 ,记录现在是 [5]
"2" - 记录加 2 ,记录现在是 [5, 2]
"C" - 使前一次得分的记录无效并将其移除,记录现在是 [5].
"D" - 记录加 2 * 5 = 10 ,记录现在是 [5, 10].
"+" - 记录加 5 + 10 = 15 ,记录现在是 [5, 10, 15].
所有得分的总和 5 + 10 + 15 = 30
复制代码

Ejemplo 2:

输入:ops = ["5","-2","4","C","D","9","+","+"]

输出:27

解释:
"5" - 记录加 5 ,记录现在是 [5]
"-2" - 记录加 -2 ,记录现在是 [5, -2]
"4" - 记录加 4 ,记录现在是 [5, -2, 4]
"C" - 使前一次得分的记录无效并将其移除,记录现在是 [5, -2]
"D" - 记录加 2 * -2 = -4 ,记录现在是 [5, -2, -4]
"9" - 记录加 9 ,记录现在是 [5, -2, -4, 9]
"+" - 记录加 -4 + 9 = 5 ,记录现在是 [5, -2, -4, 9, 5]
"+" - 记录加 9 + 5 = 14 ,记录现在是 [5, -2, -4, 9, 5, 14]
所有得分的总和 5 + -2 + -4 + 9 + 5 + 14 = 27
复制代码

Ejemplo 3:

输入:ops = ["1"]

输出:1
复制代码

insinuación:

  • 1 < = O pags s . yo mi norte gramo t h < = 1000 1 <= ops.longitud <= 1000
  • O pags s [ I ] ops[i] "C""D""+",或者一个表示整数的字符串。整数范围是 [ 3 1 0 4 , 3 1 0 4 ] [-3 * 10^4, 3 * 10^4]
  • 对于 "+" 操作,题目数据保证记录此操作时前面总是存在两个有效的分数
  • 对于 "C""D" 操作,题目数据保证记录此操作时前面总是存在一个有效的分数

模拟

根据题意进行模拟即可。

代码:

class Solution {
    static int[] nums = new int[1010];
    public int calPoints(String[] ops) {
        int n = ops.length, idx = 0;
        for (int i = 0; i < n; i++, idx++) {
            if (ops[i].equals("+")) nums[idx] = nums[idx - 1] + nums[idx - 2];    
            else if (ops[i].equals("D")) nums[idx] = nums[idx - 1] * 2;
            else if (ops[i].equals("C")) idx -= 2;
            else nums[idx] = Integer.parseInt(ops[i]);
        }
        int ans = 0;
        for (int i = 0; i < idx; i++) ans += nums[i];
        return ans;
    }
}
复制代码

nums = [0 for _ in range(1010)]
class Solution:
    def calPoints(self, ops: List[str]) -> int:
        idx = 0
        for i in range(len(ops)):
            if ops[i] == '+':
                nums[idx] = nums[idx - 1] + nums[idx - 2]
            elif ops[i] == 'D':
                nums[idx] = nums[idx - 1] * 2
            elif ops[i] == 'C':
                idx -= 2
            else:
                nums[idx] = int(ops[i])
            idx += 1
        return sum(nums[i] for i in range(idx))
复制代码
  • 时间复杂度: O ( n ) O(n)
  • 空间复杂度: O ( n ) O(n)

最后

这是我们「刷穿 LeetCode」系列文章的第 No.682 篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。

En esta serie de artículos, además de explicar las ideas de resolución de problemas, se dará el código más conciso posible. Si se trata de soluciones generales, también se proporcionarán las plantillas de código correspondientes.

Para facilitar a los estudiantes la depuración y el envío de código en la computadora, he establecido un repositorio relacionado: github.com/SharingSour… .

En la dirección del almacén, puede ver el enlace a la solución de la serie de artículos, el código correspondiente de la serie de artículos, el enlace a la pregunta original de LeetCode y otras soluciones preferidas.

Supongo que te gusta

Origin juejin.im/post/7079224311206117407
Recomendado
Clasificación