LeetCode笔记---Java语言->递归与栈->682.棒球比赛

本文是关于LeetCode中682题——棒球比赛的解题笔记,主要使用Java语言通过栈来实现递归策略。栈是一种FILO数据结构,适用于处理具有完全包含关系的问题,如表达式求值和递归。在题目中,我们需要根据操作判断并执行对应操作,栈在这里用于处理最后一到两位数的操作。
摘要由CSDN通过智能技术生成

LeetCode笔记—Java语言->递归与栈->682.棒球比赛

栈的简述:

栈:FILO先进后出,后进先出。从哪入从哪出

栈适合解决的问题:可以处理具有完全包含关系的问题(表达式求值,递归,括号匹配,二叉树遍历)。

栈的典型应用场景:
场景一:操作系统中的线程栈
场景二:表达式求值

此题思路

这道题需要我们对要进行的操作进行准确的判断,判断要进行的操作是什么,然后执行相应的操作即可。
因为这道题的操作总是对于最后一到两位数的操作,所以我们选择使用栈。

class Solution {
    public int calPoints(String[] ops) {
        LinkedList<Integer> score = new LinkedList();//驻村分数的栈
        for(int i = 0;i<ops.length;i++){//遍历字符串
            switch(ops[i]){//这里我们采用switch进行选择分支操作
                case "+":{//当为加号时,只需要把前两个值取出,在压入,再把这两个数值取和压入即可
                    int b = score.pop();
                    int a = score.pop();
                    score.push(a);
                    score.push(b);
                    score.push(a+b);
                }
                    break;
                case "D":{//D代表当前分数是前一个数的2倍,取出*2在压入,因为peek不会删除元素,所以不需要把前一个数压入
                    int b = score.peek();
                    score.push(b*2);
                }
                    break;
                case "C":{
                    score.pop();//弹出最后一个分数
                }
                break;
                default:{
                    score.push(Integer.parseInt(ops[i]));//走到了这里,就代表输入的是数字,压入即可
                }
                    break;
            }
        }
        int num = 0;
        while (score.size()!=0){//将分数加起来
            num = num + score.pop();
        }
        return num;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值