祁彧w博客

  • 🏠首页
  • 📔文章分类
    • 🖥️互联网技术
    • 🧮算法
    • 🤖人工智能
    • 📃论文学习
    • 📸生活分享
  • 💬关于
人生若只如初见
  1. 首页
  2. 算法
  3. 正文

【每日一题】Leetcode 624. 数组列表中的最大距离

2025-02-19 394点热度 0人点赞 0条评论

【每日一题】Leetcode 624. 数组列表中的最大距离

——跳转原题

中等

贪心

数组

给定 m 个数组,每个数组都已经按照升序排好序了。

现在你需要从两个不同的数组中选择两个整数(每个数组选一个)并且计算它们的距离。两个整数 a 和 b 之间的距离定义为它们差的绝对值 |a-b| 。

返回最大距离。

示例 1:

输入:[[1,2,3],[4,5],[1,2,3]]
输出:4
解释:
一种得到答案 4 的方法是从第一个数组或者第三个数组中选择 1,同时从第二个数组中选择 5 。

示例 2:

输入:arrays = [[1],[1]]
输出:0

提示 :

m == arrays.length
2 <= m <= 10^5
1 <= arrays[i].length <= 500
-10^4 <= arrays[i][j] <= 10^4
arrays[i] 以 升序 排序。
所有数组中最多有 10^5 个整数。

思路 1:(时间复杂度\(O(n)\))

  1. 遍历 arrays 记录当前最大值和最小值分别为 min_n 和 max_n,初始化为第一个 array 的最大值和最小值,同时初始化 distance 为 0 (由于必定有答案且为绝对值,所以初始化为 0 )。
  2. 根据贪心,计算当前 array 中最小值 array[0] 与最大值 max_n 之间的距离,以及最大值 array[-1] 与 min_n 之间的距离,记录它们之间的最大值,再比较上一个记录的 distance。

代码 1:

class Solution:
    def maxDistance(self, arrays: List[List[int]]) -> int:
        min_n = arrays[0][0] # array 有序
        max_n = arrays[0][-1] # array 有序
        distance = 0
        for array in arrays[1:]:
            distance = max(max(abs(array[0] - max_n), abs(array[-1] - min_n)), distance)
            min_n = min(array[0], min_n)
            max_n = max(array[-1], max_n)

        return distance

感谢浏览,欢迎关注祁彧w博客!

标签: 贪心
最后更新:2025-02-19

祁彧w

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

最新 热点 随机
最新 热点 随机
使用ZeroTier进行内网穿透异地组网并搭建moon中转服务器 【每日一题】Leetcode 2595. 奇偶位数 【每日一题】Leetcode 624. 数组列表中的最大距离 【每日一题】Leetcode 2080. 区间内查询数字的频率 【每日一题】Leetcode 1287. 有序数组中出现次数超过25%的元素 【每日一题】Leetcode 1299. 将每个元素替换为右侧最大元素
【每日一题】Leetcode 624. 数组列表中的最大距离 pandas统计分析基础知识及练习题 关于博客 【每日一题】Leetcode 2595. 奇偶位数 【每日一题】Leetcode 1299. 将每个元素替换为右侧最大元素 【每日一题】Leetcode 1552. 两球之间的磁力
标签聚合
可解释性 机器学习 数据分析 python sklearn 内网穿透 zerotier 二分查找
最近评论
祁彧w 发布于 1 年前(07月11日) 评论测试

COPYRIGHT © 2024 祁彧w. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang