首页 > 试题广场 >

划分数组

[编程题]划分数组
  • 热度指数:234 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个数组arr长度为N,你可以把任意长度大于0且小于N的前缀作为左部分,剩下的 作为右部分。但是每种划分下都有左部分的最大值和右部分的最大值,请返回最大的, 左部分最大值减去右部分最大值的绝对值。


输入描述:
第一行输入一个整数N(N<100000)
第二行输入N个整数表示arr


输出描述:
输出左部分最大值减去右部分最大值的绝对值的最大值
示例1

输入

5
3 5 1 4 2

输出

3

说明

5-2 
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        if (n <= 1) {
            return;
        }
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }
        int res = getDiff(arr);
        System.out.println(res);
    }

    public static int getDiff(int[] arr) {
        int max = Integer.MIN_VALUE;
        for (int num : arr) {
            max = Math.max(num, max);
        }
        return Math.max(Math.abs(arr[0] - max), Math.abs(arr[arr.length - 1] - max));
    }
}
发表于 2021-04-21 10:28:18 回复(0)