LeetCode 0624.数组列表中的最大距离:只关心最小最大值
【LetMeFly】624.数组列表中的最大距离:只关心最小最大值
力扣题目链接:https://leetcode.cn/problems/maximum-distance-in-arrays/
给定 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.length2 <= m <= 1051 <= arrays[i].length <= 500-104 <= arrays[i][j] <= 104arrays[i]以 升序 排序。- 所有数组中最多有
105个整数。
解题方法:只关心最小最大值
对于两个数组,抽象的画一画,大约一共有以下三种可能:(若有两端点相等也不影响结果)
-
不重合
---- ----- -
重合不包含
-------------- -
包含
------------
分别从两个数组中取一个元素,想让差值的绝对值最大,怎么取?很容易发现一定要从数组边界取值(要么取数组的最大值,要么取最小值,否则最大/小值与另一个数组的差值可以更大)。
也就是说:
我们只需要维护数组最大值和最小值,并且保证两个值不会取自同一个数组不就行了么。
- 时间复杂度 O ( l e n ( a r r a y s ) ) O(len(arrays)) O(len(arrays))
- 空间复杂度 O ( 1 ) O(1) O(1)
AC代码
C++
/** @Author: LetMeFly* @Date: 2025-02-19 17:37:04* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-02-19 17:46:16*/
/*
---- -------------------------------
*/
class Solution {
public:int maxDistance(vector<vector<int>>& arrays) {int ans = 0;int mLeft = 100000, MRight = -100000;for (vector<int>& a : arrays) {ans = max(ans, max(a.back() - mLeft, MRight - a[0]));mLeft = min(mLeft, a[0]), MRight = max(MRight, a.back());}return ans;}
};
Python
'''
Author: LetMeFly
Date: 2025-02-19 17:47:16
LastEditors: LetMeFly.xyz
LastEditTime: 2025-02-19 17:49:04
'''
from typing import Listclass Solution:def maxDistance(self, arrays: List[List[int]]) -> int:ans = 0m, M = 100000, -100000for a in arrays:ans = max(ans, M - a[0], a[-1] - m)m, M = min(m, a[0]), max(M, a[-1])return ans
Java
/** @Author: LetMeFly* @Date: 2025-02-19 17:47:53* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-02-19 17:51:18*/
import java.util.List;class Solution {public int maxDistance(List<List<Integer>> arrays) {int ans = 0;int m = 100000, M = -100000;for (List<Integer> a : arrays) {ans = Math.max(ans, Math.max(a.get(a.size() - 1) - m, M - a.get(0)));m = Math.min(m, a.get(0));M = Math.max(M, a.get(a.size() - 1));}return ans;}
}
Go
/** @Author: LetMeFly* @Date: 2025-02-19 17:47:56* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-02-19 17:53:37*/
package mainfunc maxDistance(arrays [][]int) (ans int) {m, M := 100000, -100000for _, a := range arrays {ans = max(ans, max(a[len(a) - 1] - m, M - a[0]))m, M = min(m, a[0]), max(M, a[len(a) - 1])}return
}
同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
千篇源码题解已开源
Tisfy:https://blog.letmefly.xyz/2025/02/19/LeetCode 0624.数组列表中的最大距离/
相关文章:
LeetCode 0624.数组列表中的最大距离:只关心最小最大值
【LetMeFly】624.数组列表中的最大距离:只关心最小最大值 力扣题目链接:https://leetcode.cn/problems/maximum-distance-in-arrays/ 给定 m 个数组,每个数组都已经按照升序排好序了。 现在你需要从两个不同的数组中选择两个整数ÿ…...
如何解决服务器端口被攻击:全面防护与快速响应
服务器端口被攻击是网络安全中常见的问题之一,尤其是当服务器暴露在公共网络上时,容易成为黑客的目标。攻击者可能通过扫描开放端口、利用漏洞或发动拒绝服务(DoS/DDoS)攻击来破坏服务器的正常运行。本文将详细介绍如何检测、防御…...
Golang深度学习
前言 在2009年,Google公司发布了一种新的编程语言,名为Go(或称为Golang),旨在提高编程效率、简化并发编程,并提供强大的标准库支持。Go语言的设计者们希望通过Go语言能够解决软件开发中的一些长期存在的问…...
Linux环境开发工具
Linux软件包管理器yum Linux下安装软件方式: 源代码安装rpm安装——Linux安装包yum安装——解决安装源、安装版本、安装依赖的问题 yum对应于Windows系统下的应用商店 使用Linux系统的人:大部分是职业程序员 客户端怎么知道去哪里下载软件࿱…...
JupyterNotebook高级使用:常用魔法命令
%%writefile test.py def Test(name):print("Test",name,"success")运行结果:就是在我们的文件目录下面创建了这个test.py文件,主要是认识一下这个里面的%%writefile表示创建新的文件,这个文件里面的内容就是上面我们定义…...
C++ Primer 类的作用域
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
【建设工程经济】2.1-2.2 经济效果评价的相关概念及指标体系
一、学前建议 学习内容主要有: ①财务评价的内容:盈利能力分析、偿债能力分析、财务可持续能力分析(财务生存能力); ②经济效果评价方法分类:确定性和不确定性评价、定量分析和定性分析、静态分析和动态分…...
如何用ollama快速布署deepseek-r1大模型
deepseek在春节期间因为特朗普的一番发言而在中国已几乎人尽皆知,热度到了连90高寿的老父亲都向我推荐这个中国产的AI大模型,而且它是开源的!我试验了下,用ollama也可以快速度安装布署deepseek-r1大模型。本想写篇文章来介绍下dee…...
50页PDF|数字化转型成熟度模型与评估(附下载)
一、前言 这份报告依据GBT 43439-2023标准,详细介绍了数字化转型的成熟度模型和评估方法。报告将成熟度分为五个等级,从一级的基础转型意识,到五级的基于数据的生态价值构建与创新,涵盖了组织、技术、数据、资源、数字化运营等多…...
机器学习实战(8):降维技术——主成分分析(PCA)
第8集:降维技术——主成分分析(PCA) 在机器学习中,降维(Dimensionality Reduction) 是一种重要的数据处理技术,用于减少特征维度、去除噪声并提高模型效率。主成分分析(Principal C…...
面试编程题
1. 请写出string类的定义,要求有构造函数,析构函数,拷贝,赋值函数。 #include <cstring> #include <algorithm>class String { public:explicit String(const char* str nullptr){if(str){str_ new char[strlen(st…...
Transformer多头注意力并行计算原理与工业级实现:从数学推导到PyTorch工程优化
一、核心数学原理剖析 1.1 多头注意力矩阵分解 Q XW^Q ∈ R^{nd_k} K XW^K ∈ R^{nd_k} V XW^V ∈ R^{nd_v} 多头分解公式: head_i Attention(QW_i^Q, KW_i^K, VW_i^V) 其中 W_i^Q ∈ R^{d_kd_k/h}, W_i^K ∈ R^{d_kd_k/h}, W_i^V ∈ R^{d_vd_v/h} (h为头数…...
我的2025年计划
新春佳节已过去了,又是一年伊始,即将步入漫长的工作、生活中了。一年之计在于春,我也不能免俗。 本文从工作生活两方面,列出一些计划。到年底,再回过头来看看,有哪些实现了,有哪些未实现。 工作…...
软件开源与AI开源的区别
一.软件开源 软件开源是指软件的源代码对公众开放,允许用户自由使用、修改和分发的软件。 核心特性:低成本(通常免费)、高可定制性(源代码可用,开发人员可以修改)、社区支持(庞大的…...
前端插件使用xlsx-populate,花样配置excel内容,根据坐添加标替换excel内容,修改颜色,合并单元格...。
需求要求:业务人员有个非常复杂得excel表格,各种表头等,但是模板是固定得。当然也可以实现在excel上搞出各种表格,但是不如直接用已有模板替换其中要动态得内容方便,这里我们用到CSDN得 xlsx-populate 插件。 实列中我…...
分布式大语言模型服务引擎vLLM论文解读
论文地址:Efficient Memory Management for Large Language Model Serving with PagedAttention 摘要 大语言模型(LLMs)的高吞吐量服务需要一次对足够多的请求进行批处理。然而,现有系统面临困境,因为每个请求的键值…...
如何开发一个大模型应用?
1. 背景 AIGC技术的突破性进展彻底改变了技术开发的范式,尤其是以GPT为代表的LLM,凭借其强大的自然语言理解与生成能力,迅速成为全球科技领域的焦点。2023年末,随着ChatGPT的爆火,AIGC技术从实验室走向规模化应用&…...
01-零基础入门嵌入式系统
1.什么是嵌入式系统 首先我们要知道计算机系统分为大型机、通用计算机和嵌入式系统三大类。 计算机系统的发展,经历了由1台计算机系统为N个人服务的大型机时代到由1台计算机系统为1个人服务的PC时代,正在步入由N台计算机系统为1个人服务的嵌入式时代。 嵌…...
【机器学习】CNN与Transformer的表面区别与本质区别
仅供参考 表面区别 1. 结构和原理: CNN:主要通过卷积层来提取特征,这些层通过滑动窗口(卷积核)捕捉局部特征,并通过池化层(如最大池化)来降低特征的空间维度。CNN非常适合处理具有网格状拓扑结构的数据,如图像。Transformer:基于自注意力(Self-Attention)机制,能…...
[数据结构]二叉搜索树详解
目录 一、二叉搜索树的概念 二、二叉搜索树的性能分析 三、二叉搜索树的中序遍历用于排序去重 四、二叉搜索树的查找 1、查找的非递归写法 2、查找的递归写法 五、二叉搜索树的插入 1、插入的非递归写法 2、插入的递归写法 六、二叉搜索树的删除 1、删除的非递归写法…...
撕碎QT面具(2):groupBox内容居中显示
问题描述: 当笔者在GroupBox中使用Form Layout构建图中内容时,不能居中显示。 解决方案: 1、首先在form layout左右添加横向弹簧,并ctrl进行选中这三个控件。点击水平布局,让中间的控件不变形。 2、选中groupBox&#…...
SpringBoot速成(14)文件上传P23-P26
1. 什么是 multipart/form-data? 想象一下,你有一个包裹要寄给朋友,但包裹里有不同类型的东西:比如一封信(文字)、一张照片(图片)和一个小礼物(文件)。为了确…...
图论入门算法:拓扑排序(C++)
上文中我们了解了图的遍历(DFS/BFS), 本节我们来学习拓扑排序. 在图论中, 拓扑排序(Topological Sorting)是对一个有向无环图(Directed Acyclic Graph, DAG)的所有顶点进行排序的一种算法, 使得如果存在一条从顶点 u 到顶点 v 的有向边 (u, v) , 那么在排序后的序列中, u 一定…...
PTA:使用指针方式求一个给定的m×n矩阵各行元素之和
本题要求编写程序,使用指针方式求一个给定的mn矩阵各行元素之和。(例如:scanf("%d", *(matrix i) j); // 使用指针方式访问二维数组元素) 输入格式: 输入第一行给出两个正整数m和n(1<m<6, 1<n&…...
【iOS】SwiftUI状态管理
State ObservedObject StateObject 的使用 import SwiftUIclass CountModel: ObservableObject {Published var count: Int 0 // 通过 Published 标记的变量会触发视图更新init() {print("TimerModel initialized at \(count)")} }struct ContentView: View {State…...
自制简单的图片查看器(python)
图片格式:支持常见的图片格式(JPG、PNG、BMP、GIF)。 import os import tkinter as tk from tkinter import filedialog, messagebox from PIL import Image, ImageTkclass ImageViewer:def __init__(self, root):self.root rootself.root.…...
ChatGPT行业热门应用提示词案例-AI绘画类
AI 绘画指令是一段用于指导 AI 绘画工具(如 DALLE、Midjourney 等)生成特定图像的文本描述。它通常包含场景、主体、风格、色彩、氛围等关键信息,帮助 AI 理解创作者的意图,从而生成符合要求的绘画作品。 ChatGPT 拥有海量的知识…...
Visual Studio Code的下载安装与汉化
1.下载安装 Visual Studio Code的下载安装十分简单,在本电脑的应用商店直接下载安装----注意这是社区版-----一般社区版就足够用了---另外注意更改安装地址 2.下载插件 重启后就是中文版本了...
分词器(Tokenizer) | 有了分词器,为什么还需要嵌入模型
文章目录 什么是tokenizer有了分词器,为什么还需要嵌入模型分词器为什么在transformers 里Hugging Face的Tokenizer大模型不同tokenizer训练效果对比分词器库选择当前顶尖大模型所采用的 Tokenizer 方法与词典大小 参考 什么是tokenizer Tokenizers huggingface官方…...
scala中 隐式转换
一、 隐式转换: 编译器 偷偷地,自动地帮我们把一种数据类型转换为另一种类型 例如: int --> double object test {// 复习隐式转换// 隐式转换: 编译器 偷偷地,自动地帮我们把一种数据类型转换为另一…...
