华为OD机试真题 Java 实现【投篮大赛】【2023Q1 100分】

news/2024/10/18 7:56:28/

在这里插入图片描述

一、题目描述

你现在是一场采用特殊赛制投篮大赛的记录员。

这场比赛由若于回合组成,过去几回合的得分可能会影响以后几回合的得分,比赛开始时,记录是空白的。

你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第i项操作,ops 遵循下述规则:

  1. 整数 x - 表示本回合新获得分数 x;
  2. "+” 表示本回合新获得的得分是前两次得分的总和;
  3. “D” 表示本回合新获得的得分是前一次得分的两倍;
  4. “C” 表示本回合没有分数,并且前一次得分无效,将其从记录中移除;

请你返回记录中所有得分的总和。

二、输入描述

输入为一个字符串数组。

三、输出描述

输出为一个整形数字。

四、Java算法源码

/*** +:表示本回合新获得的得分是前两次得分的总和;* C:表示本回合没有分数,并且前一次得分无效,将其从记录中移除;* D:表示本回合新获得的得分是前一次得分的两倍;*/
public static void main(String[] args) {Scanner sc = new Scanner(System.in);String line = sc.nextLine();String[] arr = line.split(" ");Deque<Integer> list = new LinkedList<>();for (String str : arr) {if ("CD+".contains(str)) {if (list.size() == 0) {System.out.println(-1);break;}switch (str){// 表示本回合新获得的得分是前两次得分的总和case "+":// 此时,list元素个数必须大于等于2,至少有两个元素if (list.size() < 2) {System.out.println(-1);break;}// 当前队列的尾部Integer last = list.pollLast();// 尾部的前一个Integer preLast = list.pollLast();// 使用"+"元素后,新的尾部Integer curLast = preLast + last;list.add(preLast);list.add(last);list.add(curLast);break;case "C":// 表示本回合没有分数,并且前一次得分无效,将其从记录中移除;list.removeLast();break;case "D":// 表示本回合新获得的得分是前一次得分的两倍;Integer pre = list.getLast();list.addLast(pre * 2);break;default:break;}}else {list.add(Integer.parseInt(str));}}int sum = 0;for (int num: list) {sum += num;}System.out.println(sum);
}

五、效果展示

1、输入

3 2 2 + 3 C 2 D

2、输出

17

3、说明

哪吒投了一个超远4分、又投了两个中距离3分,

+:表示本回合新获得的得分是前两次得分的总和;

4 + 3 + (3 + 3)

哪吒又投了一个超远4分,可惜犯规了C,4分不算。

C:表示本回合没有分数,并且前一次得分无效,将其从记录中移除;

4 + 3 + (3 + 3) + 4 - 4

哪吒又投了一个3分,

D:表示本回合新获得的得分是前一次得分的两倍;

卧槽,爆珠了,翻倍、

4 3 3 + 4 C 3 D

4 + 3 + 3 + (3 + 3) + 4 - 4 + 3 + (3 * 2) = 25

哪吒参加三分大赛,以25分的高分,力压斯蒂芬库里夺得三分大赛冠军。

在这里插入图片描述

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【不爱施肥的小布】【2023Q2 100分】

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述


http://www.ppmy.cn/news/69794.html

相关文章

Java面向对象相对于面向过程的优势?以及java创建对象的4中方式?

文章目录 面向对象相对于面向过程的优势&#xff1f;java创建对象的4中方式&#xff1f; 面向对象相对于面向过程的优势&#xff1f; 答&#xff1a; 面向过程&#xff1a; 面向过程是一种自顶向下的编程。面向过程优点&#xff1a;性能比面向对象高&#xff0c;因为类调用时…

【简介】限流

限流 为什么要限流限流算法单机限流计数器算法滑动窗口算法漏桶算法令牌桶算法 分布式限流配额算法 限流策略限流位置 为什么要限流 作为有追求的程序员&#xff0c;我们都希望自己的系统跑的飞快&#xff0c;但是速度再快&#xff0c;系统处理请求耗时也不可能为0&#xff0c…

1.1 Kubernetes概述和特性

1.1 Kubernetes概述和特性 1.1.1 Kubernetes基本介绍 Kubernetes&#xff0c;简称K8s&#xff0c;是用8代替8个字符“ubernete”而成的缩写。是2014年由谷歌开源的一个容器集群管理系统&#xff0c;谷歌在其内部系统中已经使用了十几年&#xff0c;后来经过各种完善后做了开源…

爬虫框架有Scrapy、BeautifulSoup、Selenium

爬虫框架有Scrapy、BeautifulSoup、Selenium BeautifulSoup比Scrapy相对容易学习。Scrapy的扩展&#xff0c;支持和社区比BeautifulSoup更大。Scrapy应被视为蜘蛛&#xff0c;而BeautifulSoup则是Parser。 1.爬虫基础知识 在开始Python爬虫之前&#xff0c;需要先掌握一些基础知…

Python每日一练(20230516) 打家劫舍 I\II\III\IV HouseRobber

目录 1. 打家劫舍 I House Robber i 2. 打家劫舍 II House Robber ii 3. 打家劫舍 III House Robber iii 4. 打家劫舍 IV House Robber iv &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏…

渗透测试--5.1.Crunch创建密码字典

目录 1.crunch简介 2.常用命令 3.使用实例 &#xff08;1&#xff09;.生成字母组合 &#xff08;2&#xff09;. 生成缺位的手机号码 &#xff08;3&#xff09;.生成pass01-pass99所有组合 &#xff08;4&#xff09;.生成六位密码&#xff0c;其中前四位为pass&#xf…

C++11新特性—nullptr,bind,lambda函数,智能指针,左值右值,移动语义与完美转发

nullptr NULL一般来自C语言&#xff0c;是宏定义&#xff0c;在C语言中&#xff0c;NULL被定义为整数0&#xff0c;但是这样会无法与整数0区分&#xff0c;所以C11引入新特性nullptr&#xff0c;可以区分整数与指针特性&#xff0c;但是仍然存在问题-不能区分指针类型&#xf…

【手撕红黑树】

前言 相信很多人初学者听到了红黑树后心中不免有些心慌&#xff0c;那你看到了这篇文章后相信会有所收获&#xff0c;我其实刚开始也是对红黑树抱着一种害怕甚至是恐惧&#xff0c;但是在老师的帮助下也终于慢慢的不在恐惧了&#xff0c;你想知道为什么的话就继续往下看吧。&am…