问题描述
在数列 a_1, a_2, …, a_n中,定义两个元素 a_i 和 a_j 的距离为 |i-j|+|a_i-a_j|,即元素下标的距离加上元素值的差的绝对值,其中 |x| 表示 x 的绝对值。
给定一个数列,请问找出元素之间最大的元素距离。
输入格式
输入的第一行包含一个整数 n。
第二行包含 n 个整数 a_1, a_2, …, a_n,相邻的整数间用空格分隔,表示给定的数列。
输出格式
输出一行包含一个整数,表示答案。
样例输入
5
9 4 2 4 7
思路:刚开始肯定懵,找道题眼,题目求的是两个元素之间的差绝对值和下标的绝对值,定义输入数字,然后利用枚举。求差和下标,找出最大值输出即可。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] arr = new int[n];
for (int i = 0; i < arr.length; i++) {
arr[i] = scanner.nextInt(); // 数组的输入数据
}
int max = 0, num = 0; // 最大值和数字
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
num = Math.abs(i - j) + Math.abs(arr[i] - arr[j]); // 两位数字差+下标差
max = Math.max(max, num); // 比出最大值
}
}
System.out.println(max);
}
}