【刷题日记】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

好了,本次就到这里

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

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


相关文章
|
10月前
|
自然语言处理 API Python
BERT
【11月更文挑战第18天】
373 6
|
IDE Linux 开发工具
NumPy 安装
Python 官网上的发行版是不包含 NumPy 模块的。 我们可以使用以下几种方法来安装。
320 10
|
6月前
|
JavaScript 前端开发 算法
高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图
mermaid是一款非常优秀的基于 JavaScript 的图表绘制工具,可渲染 Markdown 启发的文本定义以动态创建和修改图表。非常适合新手学习或者做一些弱交互且自定义要求不高的图表 除了流程图以外,mermaid还支持序列图、类图、状态图、实体关系图等图表可供探索。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
10月前
|
Dubbo Java 应用服务中间件
深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案
本文深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案。通过检查GraalVM版本兼容性、配置反射列表、使用代理类、检查配置文件、禁用不支持的功能、查看日志文件、使用GraalVM诊断工具和调整GraalVM配置等步骤,帮助开发者快速定位并解决问题,确保服务的正常运行。
337 1
|
11月前
|
Python
Python中tqdm模块的常用方法和示例
`tqdm` 是一个快速、可扩展的Python进度条库,适用于长循环中添加进度提示。通过封装迭代器 `tqdm(iterator)`,可以轻松实现进度显示。支持自定义描述、宽度及嵌套进度条,适用于多种迭代对象。在Jupyter notebook中,可自动调整显示效果。
509 0
|
安全 Java
java中BigDecimal详解
java中BigDecimal详解
|
算法 数据库连接 程序员
深度剖析:C++内存池的设计与实现
深度剖析:C++内存池的设计与实现
801 0
|
SQL 前端开发 Java
苍穹外卖》电商实战项目(java)知识点整理(下)
苍穹外卖》电商实战项目(java)知识点整理(下)
|
Oracle 关系型数据库 Linux
解决VMmare虚拟机安装过程没有权限问题
解决VMmare虚拟机安装过程没有权限问题
388 0
|
Python
Python tkinter 初探Toplevel控件搭建父子窗口
Python tkinter 初探Toplevel控件搭建父子窗口
410 0
Python tkinter 初探Toplevel控件搭建父子窗口