[leetcode/lintcode 题解] 算法面试真题详解:数组中最大的差值

简介: [leetcode/lintcode 题解] 算法面试真题详解:数组中最大的差值

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

描述
给 m 个数组, 每一个数组均为升序. 现在你可以从两个不同的数组中挑选两个整数(每一个数组选一个)并且计算差值. 我们将两个整数 a 和 b 之间的差定义为它们的绝对差 |a - b|. 你的任务是去找到最大的差值.

每一个给出的数组长度至少为 1. 至少有两个不为空的数组
m 个数组中所有整数的个数和在 [2, 10000]范围内.
m 个数组中所有的整数均将在[-10000, 10000]范围内.

在线评测地址:领扣题库官网

样例1
输入:[[1,2,3], [4,5], [1,2,3]]
输出:4
解释:
获得最大差值的一种方式是在第一个数组或第三个数组中取 1, 在第二个数组中取 5. 
样例2
输入:[[1,2,3,4,5,6,7,8,9],[0,10]]
输出:9

解题思路
我们在遍历m个数组时,对于第i个数组,记录前i-1个数组中的最大值和最小值,此时有res=max(res,abs(ai?maximum),abs(ai?minimum))
源代码

public class Solution {

    /**
     * @param arrs: an array of arrays
     * @return: return the max distance among arrays
     */
    public int maxDiff(int[][] arrs) {
        int res = 0, start = arrs[0][0], end = arrs[0][arrs[0].length - 1];
        for (int i = 1; i < arrs.length; i++) {
            res = Math.max(res, Math.max(Math.abs(arrs[i][0] - end), Math.abs(arrs[i][arrs[i].length - 1] - start)));
            start = Math.min(start, arrs[i][0]);
            end = Math.max(end, arrs[i][arrs[i].length - 1]);
        }
        return res;
    }
}

更多题解参考:九章官网solution

相关文章
|
4天前
|
Java
【LeetCode力扣】面试题 17.14. 最小K个数(top-k问题)
【LeetCode力扣】面试题 17.14. 最小K个数(top-k问题)
12 1
|
4天前
|
存储 算法 Java
数据结构与算法 数组和链表
数据结构与算法 数组和链表
12 0
|
4天前
|
算法
leetcode代码记录(寻找两个正序数组的中位数
leetcode代码记录(寻找两个正序数组的中位数
13 2
|
4天前
|
索引
leetcode代码记录(最长重复子数组
leetcode代码记录(最长重复子数组
12 0
|
4天前
leetcode代码记录(两个数组的交集
leetcode代码记录(两个数组的交集
9 1
|
4天前
leetcode代码记录(最大子数组和
leetcode代码记录(最大子数组和
11 2
|
4天前
|
算法
【刷题】 leetcode 面试题 08.05.递归乘法
递归算法是一种在计算机科学和数学中广泛应用的解决问题的方法,其基本思想是利用问题的自我相似性,即将一个大问题分解为一个或多个相同或相似的小问题来解决。递归算法的核心在于函数(或过程)能够直接或间接地调用自身来求解问题的不同部分,直到达到基本情况(也称为基础案例或终止条件),这时可以直接得出答案而不必再进行递归调用。
25 4
【刷题】 leetcode 面试题 08.05.递归乘法
|
4天前
|
存储 算法 安全
【刷题】 leetcode 面试题 01.06 字符串压缩
来看效果: 非常好!!!过啦!!!
27 5
【刷题】 leetcode 面试题 01.06 字符串压缩
|
4天前
|
存储 算法
Leetcode 30天高效刷数据结构和算法 Day1 两数之和 —— 无序数组
给定一个无序整数数组和目标值,找出数组中和为目标值的两个数的下标。要求不重复且可按任意顺序返回。示例:输入nums = [2,7,11,15], target = 9,输出[0,1]。暴力解法时间复杂度O(n?),优化解法利用哈希表实现,时间复杂度O(n)。
22 0
|
4天前
|
索引
Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引
Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引
http://www.vxiaotou.com