首页 > 编程语言 >【华为OD】D卷真题100分:分割数组的最大差值 Java代码实现[思路+代码]

【华为OD】D卷真题100分:分割数组的最大差值 Java代码实现[思路+代码]

时间:2024-06-01 09:33:32浏览次数:25  
标签:Java 真题 代码 OD +---+ 差值 数组

【华为OD】2024年C、D卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript

【华为OD】2024年C、D卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript-CSDN博客

JS、Java、python、C、C++代码实现:

【华为OD】D卷真题100分:分割数组的最大差值 JavaScript代码实现[思路+代码]-CSDN博客

【华为OD】D卷真题100分:分割数组的最大差值 Java代码实现[思路+代码]-CSDN博客

【华为OD】D卷真题100分:分割数组的最大差值 python代码实现[思路+代码]-CSDN博客

【华为OD】D卷真题100分:分割数组的最大差值 C语言代码实现[思路+代码]-CSDN博客

【华为OD】D卷真题100分:分割数组的最大差值 C++代码实现[思路+代码]-CSDN博客

题目描述:

给定一个由若干整数组成的数组nums ,可以在数组内的任意位置进行分割,将该数组分割成两个非空子数组(即左数组和右数组),分别对子数组求和得到两个值,计算这两个值的差值,请输出所有分割方案中,差值最大的值。

输入描述

第一行输入数组中元素个数n,1 < n <= 100000
第二行输入数字序列,以空格进行分隔,数字取值为4字节整数

输出描述

输出差值的最大取值

示例1

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

6
1 -2 3 4 -9 7

输出

10

说明

将数组 nums 划分为两个非空数组的可行方案有:
左数组 = [1] 且 右数组 = [-2,3,4,-9,7],和的差值 = | 1 - 3   | = 2 
左数组 = [1,-2] 且 右数组 = [3,4,-9,7],和的差值 = |-1 - 5   | = 6  
左数组 = [1,-2,3] 且 右数组 = [4,-9,7],和的差值 = | 2 - 2   | = 0  
左数组 = [1,-2,3,4] 且 右数组 = [-9,7],和的差值 = | 6 - (-2)| = 8  
左数组 = [1,-2,3,4,-9] 且 右数组 = [7],和的差值 = |-3 - 7   | = 10 
最大的差值为10

     7878688                                                         
                                                            
              +---+                                                          
  3            |   |       ++                               +       +---|   
  |           |   | 3      +                6               +  |   +   |        +
  |      +     |   |       +         +                      +    |  +   |       +
  |      +    |   +---+    +        +        +++++          +   +  +   |        +
  |      +    | +      |   +   +----+        |   |          +   +  +   |        +
  |      +  3 | +      |   +   +    +      2 |   |     2    +   +  +   |        +
  |      +    | +      |   +   +    +        |   |          +   +  +   |        +
  |      +---+ +     |    |  |    +    ----+   |   +---+    |  |  +   |         +
  |      |     +     |    |  |    +    |       |   |   |    |  |  +   |         +
  |    1 |     +     | 8  |  |    +  1 |   |    | 1 |   | 1 |   |  +   |        +
  |      |     +     |    |  |    +    |   |    |   |   |   |   |  +   |        +
  |  +---+     +     +---+   |    ++---+    ++   +---+   +---+   |  +   |        +
  |  |         +         |   |    |         ++              |   |  |+   |        +
  |0 |         +         | 0 |  0 |         ++              | 0 |  |+   |        +
  |  |         +         |   |    |         ++              |   |  |+   |        +
  +---+         +          +-------+                       +---+| +|+   |        +
                +                                                    +   |        +
    0   1   2   3   4   5   6   7   8   9  10  11  12 + v:    w  u m    u 1 0 2 4
 

题目解析:

        按逻辑来求和之后,再去求差值,找到最大差值即可

代码实现:


import java.util.Scanner;
import java.util.ArrayList;

public class Main {

    public static long read(ArrayList<Integer> arr, long sum) {
        long res = 0;
        long total = 0;
        for (int i = 0; i < arr.size() - 1; i++) {
            total += arr.get(i);
            res = Math.max(Math.abs(sum - 2 * total), res);
        }
        return res;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        ArrayList<Integer> arr = new ArrayList<>();
        long total = 0;

        for (int i = 0; i < n; i++) {
            arr.add(scanner.nextInt());
            total += arr.get(i);
        }

        System.out.println(read(arr, total));

        scanner.close();
    }
}

标签:Java,真题,代码,OD,+---+,差值,数组
From: https://blog.csdn.net/mars1199/article/details/139363424

相关文章

  • 【华为OD】D卷真题200分:篮球比赛 C++代码实现[思路+代码]
    【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript-CSDN博客 JS、C、C++、Java、python代码实现:【华为OD】D卷真题200分:篮球比赛JavaScript代码实现[思路+代码]-CSD......
  • 【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service
    在前一篇文章中,我们是把.NET8应用读取SSL证书(X509)示例部署在AppServiceWindows环境中,那么如果部署在Linux环境,以及LinuxContainer中呢?根据前文中的第一种方法,直接在把证书文件包含在源文件中,通过相对路径读取证书文件的方式,经测试,可以正常工作。但是,对于第二种“通过指......
  • JAVAEE之文件IO_数据流概念,字节流:InputStream、OutputStream,字符流:reader、writer,及实
    什么是数据流 顾名思义,I表示input,O表示output,也就是输入输出流,主要是在程序与文件之间,用于传输数据的通道。既然要传输数据,那么我们需要理解文件和程序之间哪种方向的传输是输入流,哪种传输作为输出流?我们可以举一个例子,如下图所示: IO流是JavaIO中的核心概念。流......
  • [机器学习] 低代码机器学习工具PyCaret库使用指北
    PyCaret是一个开源、低代码Python机器学习库,能够自动化机器学习工作流程。它是一个端到端的机器学习和模型管理工具,极大地加快了实验周期,提高了工作效率。PyCaret本质上是围绕几个机器学习库和框架(如scikit-learn、XGBoost、LightGBM、CatBoost、spaCy、Optuna、Hyperopt、Ray等)的......
  • 基于OJ的Java课程实验管理系统的设计与实现论文
    摘要课程实验网站是一个为课程提供全面、准确、及时课程实验的在线平台。它汇聚了各地的课程体验。该网站通过丰富的图片形式展示课程,让课程者提前感受到社区的乐趣。同时,它还提供了详细的课程攻略和实用建议,帮助课程者避免社区中的陷阱和误区,确保行程顺利。本课程实验......
  • 1v1视频软件源码,通过jsonp跨域的代码分析
    1v1视频软件源码,通过jsonp跨域的代码分析通常为了减轻1v1视频软件源码web服务器的负载,我们把js、css,img等静态资源分离到另一台独立域名的服务器上,在html页面中再通过相应的标签从不同域名下加载静态资源,而被浏览器允许,基于此原理,我们可以通过动态创建script,再请求一个带参网址实......
  • [转帖]一次Java内存占用高的排查案例,解释了我对内存问题的所有疑问
     https://segmentfault.com/a/1190000044152595 原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明。问题现象7月25号,我们一服务的内存占用较高,约13G,容器总内存16G,占用约85%,触发了内存报警(阈值85%),而我们是按容器内存60%(9.6G)的比例配置的JVM堆内存......
  • R语言对S&P500股票指数进行ARIMA + GARCH交易策略|附代码数据
    原文链接:http://tecdat.cn/?p=7207最近我们被客户要求撰写关于ARIMA+GARCH交易策略的研究报告,包括一些图形和统计输出。在本文中,我想向您展示如何应用S&P500股票市场指数的交易策略通过组合ARIMA和GARCH模型,从长期来看,我们可以超过“买入并持有”方法。策略概述该策略在“滚......
  • java通过冒泡排序对数组进行排序
    冒泡排序是从列表第一个元素开始,比较相邻两个元素大小,小的排在前面,大的排后面,循环反复,小的数据会像气泡那样上浮。packageproject;publicclassMaopaopaixu{ publicstaticvoidmain(String[]args){ //冒泡排序 int[]arr={9,8,3,5,2}; for(inti=0;i<arr.le......
  • python 通过 subprocess 运行的代码 exit(1) 不能使得pipeline fail
    在使用Python的subprocess模块运行外部命令时,如果你希望子进程的退出状态码能够影响Python脚本的执行结果,尤其是在使用管道(pipeline)时,你需要手动检查子进程的返回码并采取相应的措施。简单地使用subprocess.run或subprocess.call运行子进程并不会自动使Python脚......