[LeetCode] 624.Maximum Distance in Arrays

来源:互联网 发布:为什么外国人显老 知乎 编辑:程序博客网 时间:2024/06/03 23:48

题目大意:点击打开链接

例如:[[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;    }}

阅读全文
0 0