【刷题日记】682. 棒球比赛

简介: 本次刷题日记的第 11 篇,力扣题为:682. 棒球比赛 ,简单

【刷题日记】682. 棒球比赛

本次刷题日记的第 11 篇,力扣题为:682. 棒球比赛简单

一、题目描述:

image.png

这个题文字描述有点多,不过逻辑还是比较简单的,慢慢多刷几个题之后,我们就能更好的耐着性子来看看题目所表达的含义了,虽然题目是简单题,但是我们也不能放过,每一道题,都会有我们值得学习的地方,每一个人身上也总是会有发光的点


二、思路分析:

1、这道题考察了什么思想?你的思路是什么?

这道题仔细阅读后,题意还是非常明确的,我们需要注意题目中给出的规则

image.png

对于 “+”  ,“D” ,“C” 以及正常整数的运算逻辑需要处理好,其他的没啥,思路如下:

  • 遍历一次题目给出的 ops 操作数数组,对于不同的字符,我们将其翻译成对应的数字,用一个 help 数组来记录,实时结果用 res 来记录
  • 按照逻辑将数字累加,最终得出结论

我们只需要按照所给的字符进行一步一步的模拟就可以将结果模拟出来,没有什么隐藏的注意事项,我们还是以题目中给出的示例来演示一遍:

示例1 : ops = ["5","2","C","D","+"]

image.png

我们可以看到,正常的模拟下来,就是一个数学题,注意 C , D , +  这三个字符的特殊含义及对应的特殊逻辑

引入了一个帮助记录的 help 数组,记录我们的结果集

三、编码

根据上述逻辑和分析,我们就可以翻译成如下代码,就按照咱们数学的方式来处理即可

编码如下:

func calPoints(ops []string) (res int) {
 helper := []int{}
    for _, op := range ops {
        n := len(helper)
        switch op {
        case "+":
            res += helper[n-1] + helper[n-2]
            helper = append(helper, helper[n-1]+helper[n-2])
        case "D":
            res += helper[n-1] * 2
            helper = append(helper, 2*helper[n-1])
        case "C":
            res -= helper[n-1]
            helper = helper[:len(helper)-1]
        default:
            pt, _ := strconv.Atoi(op)
            res += pt
            helper = append(helper, pt)
        }
    }
    return
}

看实际编码也是非常基础的,主要是对字符的判断,以及对应逻辑的实现,实现的话则是在数组的操作上面进行处理

四、总结:

本题比较简单,主要是换换脑袋,时间复杂度是 O(n) , 空间复杂度是 O(n)

本题是给出了一些很确切的定义,并没有让我们处理异常情况

可以实际工程代码中,不得不考虑各种异常情况来保证程序的鲁棒性,需要分析好每一种出现的可能以及场景,来将不同可能的场景进行分类,统一梳理,制定解决方案,输出设计,编码等等

不过我们可以从简单题开始刷起,涨涨信心

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~


相关文章
|
6月前
|
C语言
蓝桥杯入门题 赛前练一练,喝前摇一摇
这是一个C语言编程题目集,包含10个不同的任务。任务包括:1) 打印所有5位01串,2) 找出n个数的最大值、最小值和,3) 搜索整数在数列中的位置,4) 找出立方和等于自身的三位数,5) 找出回文数,6) 对数列进行排序,7) 将秒转换为HH:MM:SS格式,8) 比较两个字符串是否相同,9) 数字的中文读法,10) 计算阶乘。每个任务都有对应的代码示例。
44 2
|
6月前
|
存储
每日一题——leetcode682.棒球比赛
每日一题——leetcode682.棒球比赛
|
Cloud Native
【刷题日记】824. 山羊拉丁文
本次刷题日记的第 40 篇,力扣题为:【刷题日记】824. 山羊拉丁文 ,简单
|
6月前
leetcode-682:棒球比赛
leetcode-682:棒球比赛
51 0
|
Cloud Native
【刷题日记】1037. 有效的回旋镖
本次刷题日记的第 58 篇,力扣题为:1037. 有效的回旋镖,简单
【刷题日记】1037. 有效的回旋镖
|
存储 算法 C++
【c++百日刷题计划】 ———— DAY3,带你轻松学习
【c++百日刷题计划】 ———— DAY3,带你轻松学习
160 0
LeetCode 682 棒球比赛
用栈实现数字的运算 用switch-case语句对符号进行不同的操作处理 用Stack下的get()方法实现取出栈内第任意个数字
|
算法 程序员 C语言
【算法集训 | 希冀刷题】考前一刷
【算法集训 | 希冀刷题】考前一刷
【算法集训 | 希冀刷题】考前一刷
试题历届真题跑步锻炼【第十一届】【省赛】【B组】(C++)
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝每天都锻炼身体。正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。 小蓝跑步已经坚持了很长时间,从 20002000 年 11 月 11 日周六(含)到 20202020 年 1010 月 11 日周四(含)。请问这段时间小蓝总共跑步多少千米?
147 0
|
算法 C++
蓝桥杯每日一刷(第四天2016)
蓝桥杯每日一刷(第四天2016)
100 0
下一篇
无影云桌面