2017.10.24
刚开始没有看清楚a,b需要是不同数组中的内容。
这样就需要保存最大值,最小值,次大值,次小值,以及他们出现在数组中的位置。来判断是不是出自同一个数组。
public class Solution {
/*
* @param : an array of arrays
* @return: return the max distance among arrays
*/
//这是一道傻逼的题吧。题目大概是没有描述清楚
//原来四问题是,必须是不同的数组
//[[2,3,4,5,6,7,8,9],[1,10],[-1,200]] 结果居然是199
public int maxDiff(int[][] arrs) {
// write your code here
// num表示有几个数组
int num = arrs.length;
int res = -1;
/**min[0]存放最小值,index存放数组的编号
* */
int []min = {Integer.MAX_VALUE,Integer.MAX_VALUE};
int []max = {Integer.MIN_VALUE,Integer.MIN_VALUE};
int []indexMin = {-1,-1};
int []indexMax = {-1,-1};
for(int i = 0; i < num; i++){
int length = arrs[i].length;
if(length == 0){
continue;
}
if(arrs[i][0] < min[0]){
min[1] = min[0];
indexMin[1] = indexMin[0];
min[0] = arrs[i][0];
indexMin[0] = i;
}
else if(arrs[i][0] < min[1]){
min[1] = arrs[i][0];
indexMin[1] = i;
}
if(arrs[i][length-1] > max[0]){
max[1] = max[0];
indexMax[1] = indexMax[0];
max[0] = arrs[i][length-1];
indexMax[0] = i;
}
else if(arrs[i][length-1] > max[1]){
max[1] = arrs[i][length-1];
indexMax[1] = i;
}
}
if(indexMin[0] != indexMax[0]){
return Math.abs(min[0]- max[0]);
}
else{
return Math.max(Math.abs(min[0] - max[1]), Math.abs(min[1] - max[0]));
}
}
};