华为OD机试C卷“跳步-数组”Java解答

描述

示例

算法思路1

不断移动数组将元素删去(并未彻底删除,而是将数字元素前移实现“伪删除”)这样删除元素的位置就呈现一定规律,详细见下图(潦草的画)

答案1

import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入一个整数数组,格式为[1,2,3,4,5,6,7,8,9]:");String input = scanner.nextLine();//去除首尾【】,然后以,将字符串分割String [] tokens = input.substring(1,input.length()-1).split(",");//创建整数数组int [] nums = new int[tokens.length];for (int i = 0; i < tokens.length; i++) {nums[i] =Integer.parseInt(tokens[i]) ;//把字符串转换为整数放入nums[]数组中}int jump = scanner.nextInt();int left = scanner.nextInt();System.out.println(sumOfLeft(nums,jump,left));}private static int sumOfLeft(int[] nums, int jump, int left) {int sum = 0;int i=1;int length=nums.length;//记录不断变化的数组长度if(left+jump>length||jump>=length-1) return -1;//剩余数量和跳数和>数组长度则无需跳while(length>left){//nums中剩余个数>left继续跳i=(i+jump)%length;for( int j=i;j<length-1;j++){nums[j]=nums[j+1];}length--;}sum=nums[0]+nums[1]+nums[2];return sum;}
}

详解1

请忽略我这潦草的字体,懒得不想重画了。 

算法思路2

先求整体数组的和,然后不断把删去的元素减去。

答案2

import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入一个整数数组,格式为[1,2,3,4,5,6,7,8,9]:");String input = scanner.nextLine();//去除首尾【】,然后以,将字符串分割String [] tokens = input.substring(1,input.length()-1).split(",");//创建整数数组int [] nums = new int[tokens.length];for (int i = 0; i < tokens.length; i++) {nums[i] =Integer.parseInt(tokens[i]) ;//把字符串转换为整数放入nums[]数组中}int jump = scanner.nextInt();int left = scanner.nextInt();System.out.println(sumOfLeft(nums,jump,left));
//        int [] num={1,2,3,4,5,6,7,8,9};
//        System.out.println(sumOfLeft(num,4,3));}private static int sumOfLeft(int[] nums, int jump, int left) {int sum = 0;int length=nums.length;//记录不断变化的数组长度if(left+jump>length||jump>=length-1) return -1;//剩余数量和跳数和>数组长度则无需跳ArrayList<Integer> numbers = new ArrayList<>();for(int num:nums){sum +=num;numbers.add(num);}for(int i=(1+jump)%numbers.size();numbers.size()>left;i=(i+jump)%numbers.size()){sum -= numbers.get(i);numbers.remove(i);}return sum;}
}

详解2

使用ArrayList集合类实现真正的删除操作。ArrayList详细操作请移步

Java“集合框架”知识速成笔记学完就去实战(三)-CSDN博客

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

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

相关文章

【MySql学习之路】window环境下MySql安装和安装过程中出现的问题

environment:windows software:mysql 本文主要分享mysql关系型数据库在干净的环境下,第一次安装以及在安装过程中出现的常见问题和解决方法。目前官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的。很多人下了zip格式的解压发现没有setup.exe,面对一堆文件无从…

最全NVIDIA Jetson开发板参数配置和购买指南

NVIDIA开发的GPU不仅在电脑显卡领域占据大量份额&#xff0c;在嵌入式NVIDIA的Jeston系列开发板也近乎是领先的存在&#xff0c;特别是NVIDIA Jeston系列开发板在算力和成本的平衡上都要优于其他厂家&#xff0c;性价比很高&#xff0c;设备体积小。本博文旨在给采购NVIDIA Jes…

【LeetCode每日一题】299. 猜数字游戏

文章目录 [299. 猜数字游戏](https://leetcode.cn/problems/bulls-and-cows/)思路&#xff1a;代码&#xff1a; 299. 猜数字游戏 思路&#xff1a; 遍历两个字符串 secret 和 guess&#xff0c;若字符既在相同位置上又相等&#xff0c;则位置和数字都正确&#xff0c;对应的 …

宝塔一键迁移报错创建失败问题完美解决

很多站长朋友在使用宝塔面板迁移的时候总是出错&#xff0c;如图&#xff1a; 遇到这样的问题不要慌&#xff0c;我们已经完美处理&#xff0c;详细解决教程&#xff1a;宝塔一键迁移报错问题完美解决教程

微信小程序跳转到其他小程序

有两种方式&#xff0c;如下&#xff1a; 一、appid跳转 wx.navigateToMiniProgram({appId: 目标小程序appid,path: 目标小程序页面路径,//不配的话默认是首页//develop开发版&#xff1b;trial体验版&#xff1b;release正式版envVersion: release, success(res) {// 打开成功…

JDBC的学习记录

JDBC就是使用java语言操作关系型数据库的一套API。 JDBC&#xff08;Java Database Connectivity&#xff09;是Java语言中用于连接和操作数据库的一种标准接口。它提供了一组方法和类&#xff0c;使Java程序能够与各种不同类型的关系型数据库进行交互。 JDBC的主要功能包括建…

Angular基础---HelloWorld---Day3

文章目录 0.ng-model 的几种不同的class属性1.ng-model 的引用与属性的调用2.表单验证&#xff1a; (模版引用变量、ngModel 、ngif一起使用&#xff09;3.根据class属性的值ng-invalid &#xff0c;设置动态变化的样式 0.ng-model 的几种不同的class属性 引用ng-model 元素的c…

分布式执行引擎ray入门--(3)Ray Train

Ray Train中包含4个部分 Training function: 包含训练模型逻辑的函数 Worker: 用来跑训练的 Scaling configuration: 配置 Trainer: 协调以上三个部分 Ray TrainPyTorch 这一块比较建议直接去官网看diff&#xff0c;官网色块标注的比较清晰&#xff0c;非常直观。 impor…

MySQL-视图:视图概述、使用视图注意点、视图是否影响基本表

视图 一、视图概述二、使用视图注意点三、视图操作是否影响基本表 一、视图概述 在数据库管理系统中&#xff0c;视图&#xff08;View&#xff09;是一种虚拟表&#xff0c;它并不实际存储数据&#xff0c;而是基于一个或多个实际表的查询结果。视图提供了一种对数据库中数据…

RabbitMQ备份交换机

1. 备份交换机 备份交换机可以理解为 RabbitMQ 中交换机的“备胎”&#xff0c;当我们为某一个交换机声明一个对应的备份交换机时&#xff0c;就是为它创建一个备胎&#xff0c;当交换机接收到一条不可路由消息时&#xff0c;将会把这条消息转发到备份交换机中&#xff0c;由备…

reids设计与实现(一)——数据对象

文章目录 1. 前言2. redis 动态字符串2.1. 字符串的数据结构&#xff1a;2.2. 剖析&#xff0c;length&#xff1b;2.3. 剖析&#xff0c;free&#xff1b;2.3. 使用c字符串函数&#xff1b; 3. redis 链表4. 字典5. 跳跃表 1. 前言 reids作为最常用的缓存数据库&#xff0c;深…

【MATLAB】MATLAB学习笔记

MATLAB入门 基础操作变量命名数据类型逻辑和流程控制循环结构分支结构 绘图基本操作二维平面绘图绘图参数三位立体绘图图像窗口的分割 本文参考B站视频&#xff1a;BV13D4y1Q7RS 由于我对于C语言很熟悉&#xff0c;很多语法是会参考C来学 基础操作 清屏%% 清空环境变量及命令 …

图腾柱PFC工作原理:一张图

视屏链接&#xff1a; PFC工作原理

docker学习笔记——Dockerfile

Dockerfile是一个镜像描述文件&#xff0c;通过Dockerfile文件可以构建一个属于自己的镜像。 如何通过Dockerfile构建自己的镜像&#xff1a; 在指定位置创建一个Dockerfile文件&#xff0c;在文件中编写Dockerfile相关语法。 构建镜像&#xff0c;docker build -t aa:1.0 .(指…

【每日一题】2834. 找出美丽数组的最小和-2024.3.8

题目&#xff1a; 2834. 找出美丽数组的最小和 给你两个正整数&#xff1a;n 和 target 。 如果数组 nums 满足下述条件&#xff0c;则称其为 美丽数组 。 nums.length n.nums 由两两互不相同的正整数组成。在范围 [0, n-1] 内&#xff0c;不存在 两个 不同 下标 i 和 j &…

阿里云实现两个VPC网络资源互通

背景 由于实际项目预算有限&#xff0c;两套环境虽然分别属于不同的专有网络即不同的VPC&#xff0c;但是希望借助一台运维机器实现对两个环境的监控和日常的运维操作 网络架构 如下是需要实现的外网架构图&#xff0c;其中希望实现UAT环境的一台windows的堡垒机可以访问生产…

第G3周:CGAN入门|生成手势图像

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 一、前置知识 CGAN&#xff08;条件生成对抗网络&#xff09;的原理是在原始GAN的基础上&#xff0c;为生成器和判别器提供 额外的条件信息…

【linux】04 :linix实用操作

1.常用快捷键 ctrlc表示强制停止。linux某些程序的运行&#xff0c;如果想强制停止&#xff0c;可以使用&#xff1b;命令输入错误&#xff0c;也可以通过ctrlc,退出当前输入&#xff0c;重新输入。 ctrld表示退出登录&#xff0c;比如退出root以回到普通用户&#xff0c;或者…

Stable Diffusion 模型下载:ZavyChromaXL(现实、魔幻)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 作者述&#xff1a;该模型系列应该是用于 SDXL 的 ZavyMix SD1.5 模型的延续。主要重点是获…

背包问题算法

背包问题算法 0-1背包问题二维数组一维数组 完全背包问题二维数组一维数组 多重背包问题一维数组 0-1背包问题 问题&#xff1a;背包的容量为9&#xff0c;有重量分别为[2, 4, 6, 9]的四个物品&#xff0c;价值分别为[3, 4, 5, 6]&#xff0c;求背包能装的物品的最大价值是多少…