华为OD机试 - 求幸存数之和(Java 2024 C卷 100分)

news2024/11/25 15:46:31

在这里插入图片描述

华为OD机试 2024C卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷+C卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

给一个正整数列nums,一个跳数jump,及幸存数量left。运算过程为:从索引为0的位置开始向后跳,中间跳过 J 个数字,命中索引为 J+1的数字,该数被敲出,并从该点起跳,以此类推,直到幸存left个数为止。然后返回幸存数之和。

约束:

0是第一个起跳点。

起跳点和命中点之间间隔jump 个数字,已被敲出的数字不计入在内。

跳到末尾时无缝从头开始(循环查找),并可以多次循环。

若起始时 left > len(nums) 则无需跳数处理过程。

/**
*
* @param nums  正整数数列,长度范围 [1,10000]
* @param jump  跳数,范围 [1,10000]
* @param left  幸存数量,范围 [1,10000]
* @return 幸存数之和
*/
int sumOfLeft(int[] nums,int jump,int left)

二、输入描述

第一行输入正整数数列
第二行输入跳数
第三行输入幸存数量

三、输出描述

输出幸存数之和

1、输入

1,2,3,4,5,6,7,8,9
4
3

2、输出

13

3、说明

从1(索引为0)开始起跳,中间跳过4个数字因此依次删除 6,2,8,5,4,7。 剩余 1,3,9,返回和为13

四、解题思路

  1. 转换为列表:将整数数组转换为 ArrayList 以便进行元素的动态删除。
  2. 判断幸存数量:如果 left 大于或等于列表的大小,直接计算并返回整个列表的和,因为不需要执行任何删除操作。
  3. 删除元素:
    • 初始化起始索引 index 为 1,因为问题描述从索引0开始。
    • 使用循环不断移除元素,直到列表的大小缩减到 left 指定的数量。每次循环中:
      • 计算删除元素的索引,使用 (index + jump) % nums.size() 来确保索引在合法范围内并能循环遍历列表。
      • 删除当前索引处的元素。由于元素被删除后,列表大小会缩减,因此当前 index 会自然指向下一个元素的位置。

五、Java算法源码

public class OdTest01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String line1 = scanner.nextLine();
        int jump = Integer.parseInt(scanner.nextLine().trim());
        int left = Integer.parseInt(scanner.nextLine().trim());

        int[] numStrs = Arrays.stream(line1.split(",")).mapToInt(Integer::parseInt).toArray();
        System.out.println(sumOfLeft(numStrs, jump, left));
    }

    private static int sumOfLeft(int[] arr, int jump, int left) {
        ArrayList<Integer> nums =(ArrayList<Integer>) Arrays.stream(arr).boxed().collect(Collectors.toList());
        if (left >= nums.size()) {
            return nums.stream().mapToInt(Integer::intValue).sum(); // 如果剩余数量不需删除,直接返回和
        }

        int index = 1; // 初始索引
        while (nums.size() > left) {
            index = (index + jump) % nums.size(); // 计算需要删除的元素索引
            nums.remove(index); // 删除元素
            // 注意:删除后,index指向下一个元素的位置,即原位置的下一个元素成为新的起跳点
        }

        return nums.stream().mapToInt(Integer::intValue).sum(); // 计算并返回剩余元素的和
    }
}

六、效果展示

1、输入

1,2,3,4,5,6,7,8,9
4
3

2、输出

13

3、说明

在这里插入图片描述


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 C卷 200分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷+C卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1669553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python将图片以及标注信息按类别分开

目录 需求&#xff1a; 思路&#xff1a; 原数据集结构&#xff1a; 代码1&#xff08;效率低&#xff0c;但不用提前知道需要分多少个类别&#xff09;&#xff1a; 代码2&#xff08;效率相对高点&#xff0c;但类别数量如果超过设定的11个&#xff0c;则需要改下代码&a…

MySQL·索引

目录 索引的意义 索引的理解 为何IO交互要是 Page 理解Page 其他数据结构为何不行&#xff1f; 聚簇索引 VS 非聚簇索引 索引操作 主键索引操作 唯一键索引操作 普通索引的创建 总结 全文索引 索引的意义 索引&#xff1a;提高数据库的性能&#xff0c;索引是物美…

[AIGC] 压缩列表了解吗?快速列表 quicklist 了解吗?

文章目录 压缩列表了解吗&#xff1f;快速列表 quicklist 了解吗&#xff1f; 压缩列表了解吗&#xff1f; 压缩列表是 Redis 为了节约内存 而使用的一种数据结构&#xff0c;是由一系列特殊编码的连续内存快组成的顺序型数据结构。 一个压缩列表可以包含任意多个节点&#xf…

ae如何导出mp4格式?图文教程,手把手教您搞定

在创作精彩的视频内容后&#xff0c;将其成功导出为通用的MP4格式是确保作品在不同平台上流畅播放的重要一环。Adobe After Effects作为一款专业的视频后期制作工具&#xff0c;提供了丰富的功能来实现这一目标。在本文中&#xff0c;我们将通过图文教程&#xff0c;手把手地向…

人生是旷野,不是轨道

最近看到一句话&#xff0c;很喜欢&#xff0c;分享一下。"人生是旷野&#xff0c;不是轨道"。人生不是固定的方程式&#xff0c;也没有唯一答案&#xff0c;没有谁生来就应该是什么样。别太被太多世俗观念束缚住手脚&#xff0c;每个人都有权利自由生长&#xff0c;…

【Ubuntu】apt命令安装最新版本Nginx

目录 环境前言添加Nginx仓库步骤1、仓库公钥2、文本公钥转二进制GPG公钥&#xff08;可选&#xff09;3、添加apt软件源4、安装新版Nginx 参阅 环境 Ubuntu 22.04 前言 ubuntu官方apt软件仓库&#xff08;或者叫软件源&#xff09;的软件版本可能会比较旧&#xff0c;导致无…

Unity 性能优化之GPU Instancing(五)

提示&#xff1a;仅供参考&#xff0c;有误之处&#xff0c;麻烦大佬指出&#xff0c;不胜感激&#xff01; 文章目录 前言一、GPU Instancing使用方法二、使用GPU Instancing的条件三、GPU Instancing弊端四、注意五、检查是否成功总结 前言 GPU Instancing也是一种Draw call…

xCode升级后: Library ‘iconv2.4.0’ not found

报错信息&#xff1a; targets 选中 xxxNotification: Build Phases ——> Link Binary With Libraries 中&#xff0c;移除 libiconv.2.4.0.tbd libiconv.2.4.0.dylib 这两个库&#xff08;只有一个的移除一个就好&#xff09;。 然后重新添加 libiconv.tbd 修改完…

如何将Git仓库中的文件打包成zip文件?

要将Git仓库中的文件打包成zip文件&#xff0c;您可以使用git archive命令。这个命令允许您将任何git可访问的树或提交导出成一个归档文件。以下是一些基本的步骤&#xff1a; 打开命令行或终端。切换到您的Git仓库的目录。执行git archive命令。 git archive --formatzip --o…

【ARMv8/v9 系统寄存器 5 -- CPU ID 判断寄存器 MPIDR_EL1 使用详细介绍】

文章目录 寄存器名称: MPIDR_EL1寄存器结构:主要功能和用途亲和级别&#xff08;Affinity Levels&#xff09;简介CORE ID 获取函数 在ARMv8-A架构中&#xff0c; MPIDR_EL1寄存器是一个非常重要的系统寄存器&#xff0c;它提供了关于处理器在其物理和逻辑配置中的位置的信息。…

力扣:48. 旋转图像(Java)

目录 题目描述&#xff1a;输入&#xff1a;输出&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使…

STM32快速入门(定时器之输出PWM波形)

STM32快速入门&#xff08;定时器之输出PWM波形&#xff09; 前言 本节主要讲解STM32利用通用定时器&#xff0c;利用CCR和CNT寄存器&#xff0c;输出指定占空比和频率的PWM波形。其功能的应用有&#xff1a;实现LED呼吸灯的效果、控制步进电机、控制直流电机转速等。 导航 …

GUI Pro - Survival Clean

通过开发生存游戏的经验,我们制作了一个带有科幻概念的GUI包。我们希望这个包对你的项目有所帮助。 主要特征 - 2560x1440分辨率图形 - GUI皮肤,包含布局演示场景和预制件 - 提供各种象形图标和项目图标 - 切片元素和白色元素,可定制尺寸和颜色 - 不包括编码和动画 资产 - 1…

栈和队列OJ练习题及解答

前言 上一篇博客已经讲到了栈和队列的数据结构&#xff0c;概括一下&#xff1a;栈后进先出&#xff08;Last In First Out&#xff09;、队列先进先出&#xff08;First In First Out&#xff09;。那么&#xff0c;接下来就来讲讲&#xff0c;关于栈和队列的相关练习题&#…

蓝桥杯-线性动态规划问题背包问题进阶策略详解-

题目&#xff1a;蓝桥云课-青蛙吃虫 解题代码&#xff1a; #include <iostream> #include<cstring> #include<algorithm> using namespace std;const int N106;int f[N][N]; int a[N]; int t,l,r,k,n;int main() {cin>>t;while(t--){scanf("%d%…

FANUC机器人初始化系统的基本方法和步骤

FANUC机器人初始化系统的基本方法和步骤 首先,在做系统初始化之前,必须做好系统的备份,这里做个镜像备份,更详细的镜像备份步骤可参考以下链接中的内容: FANUC机器人进行全部备份和镜像备份以及加载备份文件的具体操作(图文) 如下图所示,在示教器右边的USB接口上插个…

Android finishInputEvent 流程分析

InputDispatcher将事件分发给应用程序后&#xff0c;将该event放入connection的wq队列中&#xff0c;APP处理完之后&#xff0c;需要发送一个完成的信号给InputDispatcher&#xff0c;以供InputDispatcher来将该event从wq队列中移除。我们来分析这个过程。 我们知道&#xff0…

图文详解:synchronized关键字 及其底层原理

目录 一.线程安全问题 二.synchronized关键字 ▐ synchronized图解 ▐ 可重入锁及图解 ▐ synchronized用于方法上 三.Java标准库中synchronized的使用 四.synchronized的底层实现原理 一.线程安全问题 线程安全是指在多线程环境下&#xff0c;对共享资源的访问不会导致…

【数轮】数论、质数、最大公约数、菲蜀定理

数学 唯一分解定理 n>2都可以表示为质因数的乘方。 令 n a1b1a2b2 … \dots … a1,b1 … \dots …都是质因数&#xff0c;b1,b2 … \dots …是对应质因数的数量。 调和级数 11/2 1/3 1/4 ⋯ \cdots ⋯ 1/ n 约等于 logn。 证明过程&#xff1a; 1/3 1/4 < (1/2) …

程序员最趁手的SVM算法,学完你会哭着感谢努力的自己!下篇.

支持向量机上篇内容更重要。 上篇地址&#xff1a;程序员最趁手的SVM算法&#xff0c;学完你会哭着感谢努力的自己&#xff01;上篇。-CSDN博客 废话不说直接进入主题&#xff1a; 6核贝叶斯支持向量机 核贝叶斯支持向量机通过学习一些已知的例子&#xff0c;并找到一个特殊…