[LeetCode] 624.Maximum Distance in Arrays

题目大意:点击打开链接

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值