Maximum Distance in Array

Given m arrays, and each array is sorted in ascending order. Now you can pick up two integers from two different arrays (each array picks one) and calculate the distance. We define the distance between two integers a and b to be their absolute difference |a-b|. Your task is to find the maximum distance.

Example 1:

Input:
[[1,2,3],
 [4,5],
 [1,2,3]]
Output: 4
Explanation:
One way to reach the maximum distance 4 is to pick 1 in the first or third array and pick 5 in the second array.

Note:

  1. Each given array will have at least 1 number. There will be at least two non-empty arrays.
  2. The total number of the integers in all the m arrays will be in the range of [2, 10000].
  3. The integers in the m arrays will be in the range of [-10000, 10000].
 1 public class Solution {
 2     public int maxDistance(List<List<Integer>> arrays) {
 3         int n = arrays.size();
 4         int[] small = new int[n];
 5         int[] large = new int[n];
 6         for (int i = 0; i < n; i++) {
 7             List<Integer> array = arrays.get(i);
 8             small[i] = array.get(0);
 9             large[i] = array.get(array.size() - 1);
10         }
11
12         HashMap<Integer, Integer> smallMap = new HashMap<>();
13         HashMap<Integer, Integer> largeMap = new HashMap<>();
14         for (int i = 0; i < n; i++) {
15             smallMap.put(small[i], i);
16             largeMap.put(large[i], i);
17         }
18
19         Arrays.sort(small);
20         Arrays.sort(large);
21
22         int low = 0, high = n - 1;
23         if (smallMap.get(small[low]) == largeMap.get(large[high])) {
24
25             // choose the second smallest
26             int result1 = calculateABS(large[high], small[low]);
27             if (low < n - 1) {
28                 result1 = calculateABS(large[high], small[low + 1]);
29             }
30
31             // choose the second largest
32             int result2 = calculateABS(large[high], small[low]);
33             if (high > 0) {
34                 result2 = calculateABS(large[high - 1], small[low]);
35             }
36
37             return Math.max(result1, result2);
38         }
39         return calculateABS(large[high], small[low]);
40     }
41
42     private int calculateABS(int num1, int num2) {
43         return Math.abs(num1 - num2);
44     }
45 }
时间: 2024-08-25 10:18:04

Maximum Distance in Array的相关文章

Leetcode - 624 - Maximum Distance in Arrays

624. Maximum Distance in Arrays Given m arrays, and each array is sorted in ascending order. Now you can pick up two integers from two different arrays (each array picks one) and calculate the distance. We define the distance between two integers a a

LeetCode Maximum Distance in Arrays

原题链接在这里:https://leetcode.com/problems/maximum-distance-in-arrays/description/ 题目: Given m arrays, and each array is sorted in ascending order. Now you can pick up two integers from two different arrays (each array picks one) and calculate the distanc

[LeetCode] Maximum Distance in Arrays 数组中的最大距离

Given m arrays, and each array is sorted in ascending order. Now you can pick up two integers from two different arrays (each array picks one) and calculate the distance. We define the distance between two integers a and b to be their absolute differ

624. Maximum Distance in Arrays二重数组中的最大差值距离

[抄题]: Given m arrays, and each array is sorted in ascending order. Now you can pick up two integers from two different arrays (each array picks one) and calculate the distance. We define the distance between two integers a and b to be their absolute

[LeetCode] 624. Maximum Distance in Arrays 数组中的最大距离

Given m arrays, and each array is sorted in ascending order. Now you can pick up two integers from two different arrays (each array picks one) and calculate the distance. We define the distance between two integers a and b to be their absolute differ

57. 数对之差的最大值:4种方法详解与总结[maximum difference of array]

[本文链接] http://www.cnblogs.com/hellogiser/p/maximum-difference-of-array.html [题目] 在数组中,数字减去它右边的数字得到一个数对之差.求所有数对之差的最大值.例如在数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11,是16减去5的结果. [分析] 看到这个题目,很多人的第一反应是找到这个数组的最大值和最小值,然后觉得最大值减去最小值就是最终的结果.这种思路忽略了题目中很重要的一点:数对之差

152. Maximum Product Subarray (Array; DP)

Find the contiguous subarray within an array (containing at least one number) which has the largest product. For example, given the array [2,3,-2,4],the contiguous subarray [2,3] has the largest product = 6. 思路:类似Maximum Subarray,不同的是 max(max_local*n

Avito Cool Challenge 2018:D. Maximum Distance (最小生成树)

题目链接 题意 : 给出一个联通图和一些特殊的点,现在定义cost(u,v)为一条从u到v的路径上面边权的最大值 , 定义dis(u,v) 为从u到v 路径上面cost 的最小值 然后求所有特殊点到其他特殊点的最大距离 题解: 做这题前,首先思考一件事情,对于一颗树来说点到点的距离是不是就是树上面路径的边权最大值 我们来证明一下:假设在最小生成树上面的路径cost为w1,另外在原图中还有一条路径从u到v,其cost为w2,那么必然有w2>w1的.那么我们最后的dis一定是w1. 那么我们现在的目

CF&amp;&amp;CC百套计划2 CodeChef December Challenge 2017 Chef and Hamming Distance of arrays

https://www.codechef.com/DEC17/problems/CHEFHAM #include<cstdio> #include<cstring> #include<iostream> using namespace std; #define N 100001 int a[N],b[N]; int sum[N],wh[N][2]; int num1[N],num2[N]; void read(int &x) { x=0; char c=getc