题目大意:点击打开链接
例如:[[1,2,3],[4,5],[0,6]]
思路:1. arrays里的第一个list的第一个和最后一个值分别记做当前的最小值和最大值, [[1,2,3],[4,5],[1,2,3]]
2. 从第二个list开始遍历arrays,它的最大最小值,与当前的最小值和最大值形成当前的最大distance,记做dis,
dis=Math.max(dis,Math.abs(5-1));
dis=Math.max(dis,Math.abs(4-3));
然后把第一个list的第一个和最后一个值分别记做当前的最小值和最大值, [[1,2,3],[4,5],[1,2,3]]
3. 依次向后
注意:这样就不会出现组成max distance的两个值是来自同一个list
public class Solution {
public int maxDistance(List<List<Integer>> arrays) {
int minVal=arrays.get(0).get(0);
int maxVal=arrays.get(0).get(arrays.get(0).size()-1);
int dis=Integer.MIN_VALUE;
for(int i=1;i<arrays.size();i++){
List<Integer> list=arrays.get(i);
dis=Math.max(dis,Math.abs(list.get(list.size()-1)-minVal));
dis=Math.max(dis,Math.abs(list.get(0)-maxVal));
minVal=Math.min(minVal,list.get(0)); //同时把这此遍历的list的最大最小值
maxVal=Math.max(maxVal,list.get(list.size()-1)); //当做下一此的比较对象
}
return dis;
}
}