华为OD机试统一考试D卷C卷 - 求幸存数之和

题目描述

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

约束:

  • 0是第一个起跳点
  • 起跳点和命中点之间间隔 jump 个数字,已被敲出的数字不计入在内。
  • 跳到末尾时无缝从头开始(循环查找),并可以多次循环。
  • 若起始时 left > len(nums) 则无需跳数处理过程。

方法设计:

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

输入描述

第一行输入正整数数列

第二行输入跳数

第三行输入幸存数量

输出描述

输出幸存数之和

用例



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

解题思路

本题考试时为Lettoce模式,无需自己获取输入数据。

本题主要是模拟操作,按照每次跳数的位置,从数列中删掉跳到的数组,直到剩余幸存数量的数字。

Java

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 读取一行输入,按逗号分割,转换为整数数组
        int[]

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

华为OD机试刷题 文章被收录于专栏

华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务