评估大语言模型(LLM)在分子预测任务能够理解分子几何形状性能
摘要
论文地址:https://arxiv.org/pdf/2403.05075
近年来,机器学习模型在各个领域越来越受欢迎。学术界和工业界都投入了大量精力来提高机器学习的效率,以期实现人工通用智能(AGI)。其中,大规模语言模型(LLM)等生成模型的巨大进步彻底改变了自然语言处理(NLP)领域。大规模语言模型在理解和生成类人文本方面表现出了非凡的能力,已成为机器翻译、常识推理和编码任务等各种自然语言处理任务中不可或缺的工具。
最近的一项突破,即上下文学习(ICL),通过在推理过程中获取特定任务的知识,进一步提高了大规模语言模型的适应性,从而减少了对大量微调的需求。虽然大规模语言模型已在各种自然语言处理应用中证明了其有效性,但它们在其他领域的全部潜力尚未得到充分研究。特别是,大规模语言模型在处理结构化数据(如图)时非常吃力,在处理特定领域查询(如生物学和化学)时也面临挑战。
为了填补这一空白,本文探讨了以下关键研究问题:"大规模语言模型能否有效处理分子预测任务?为了回答这个研究问题,我们确定了包括分类和回归预测任务在内的关键任务,并使用六个基准分子数据集(如 ogbg-molbace、ogbg-molbbbp、ogbg-molhiv、ogbg-molesol、ogbg-molfreesolv 和ogbg-molipo)进行调查。
如下图所示,分子可以用多种表示格式表示,包括 SMILES 字符串和几何结构。然而,现有大规模语言模型的一个主要局限是依赖于非结构化文本,这使它们无法将重要的几何结构作为输入。为了应对这一挑战,Fatemi 等人提出了一种将图形结构编码为文本描述的方法。在本文中,这种方法被扩展到将分子的原子属性和图形结构都编码到文本描述中,如下图所示。
然后,战略性地设计一系列提示,利用大规模语言模型的各种能力(如领域知识、ICL 能力)生成对分子任务的响应。然后,根据下游任务的一致性和性能对这些回答进行评估,并与针对分子预测任务设计的现有机器学习模型生成的回答进行比较。
研究表明,与现有的机器学习模型相比,大规模语言模型缺乏有竞争力的性能,尤其是专门用于捕捉分子几何形状的模型显示出较差的结果。ICL 技术可以大大提高大规模语言模型的性能,但仍与现有机器学习模型存在差距,这凸显了当前大规模语言模型直接处理分子任务的能力有限。
然后,我们探讨了将大规模语言模型的反应与现有机器学习模型相结合的可能性,并观察到在许多情况下都有显著的改进。结果表明,目前使用大规模语言模型作为领域知识增强器比让它们直接处理分子预测任务更有效。此外,研究还深入探讨了现有大规模语言模型在分子任务中的局限性和有前途的方法。希望这项工作能为设计由大规模语言模型增强的分子任务跨学科框架提供新的见解。
方法
本文旨在评估大规模语言模型在处理生物学领域结构化分子数据的挑战性预测任务时的性能。分子可以用多种格式表示,如 SMILES 字符串或几何结构。然而,现有的大规模语言模型受限于对非结构化文本的依赖,无法将重要的几何结构作为输入。为了克服这一限制,Fatemi 等人提出了一种将图形结构编码为文本描述的方法。本文进一步扩展了这种方法,将分子的原子属性和图形结构都编码到文本描述中。这样就可以将重要的分子特性纳入不同的预测任务中。
首先,让我们讨论一下问题的设置。首先,分子 G 表示为 G=(𝑆, 𝐺, 𝐷)其中,𝑆 是 SMILES 字符串,𝐺 是几何结构,𝐷 是对 G 生成的原子属性和图结构的描述,𝑦∈Y 表示 G 的标签。其中,分子集 M={G1,G2,… , G𝑚} ,让MT⊂M包含已知标签𝑦𝑣 的分子。目标是预测所有 G𝑦𝑢 的未知标签𝑦𝑢∈ M𝑡𝑒𝑠𝑡 (M𝑡𝑒𝑠𝑡 =M𝑢𝑡)。此外,MT 被分成两个子集:M𝑡𝑟𝑎𝑖𝑛和 M𝑣𝑎𝑙;M𝑡𝑟𝑎𝑖𝑛作为训练集,M𝑣𝑎𝑙 作为验证集。这种分离允许对模型参数进行微调,减少过拟合,并在将机器学习(ML)模型应用于测试数据集 M𝑡𝑒𝑠𝑡 之前对其进行验证。
提示工程的下一个目标是将问题 Q 以适当的形式格式化,以便大规模语言模型(𝑓𝐿𝑀)返回相应的答案𝐴。本文的目的是为大规模语言模型提供有用的、全面的分子知识,使其能够对测试数据集进行预测。微调和 LoRA 等方法可用于提高大规模语言模型的性能,但这些方法通常需要访问模型的内部结构,且计算成本高昂,因此通常难以应用于实际场景。因此,本文针对的情况是𝑓𝐿𝑀及其参数是固定的,并且𝑓𝐿𝑀是黑盒设置中唯一的文本输入和输出。随着专有模型数量的增加及其硬件要求的提高,这种设置尤为重要。
第一组提示(IF、IP、IE)提供分子的 SMILES 字符串𝑆 和描述𝐷,并要求大规模语言模型在没有预先训练或任务知识的情况下生成所需格式的输出。大规模语言模型的指令只提供背景信息。特别是,IF 要求大规模语言模型提供对预测任务有用的有意义的见解。
IPs 寻求对分子特性的预测,IEs 寻求进一步的解释,而大规模语言模型应阐明解释的生成过程,并提供有用的证据来理解预测。作为对 IF、IP 和 IE 描述的补充,还衍生出了 IFD、IPD 和 IED 提示。描述提供了更全面的分子图特征和结构信息,但会产生大量的标记,这可能会影响大规模语言模型中应答的一致性和约束性。
下面的提示集(FS)提供了少量任务和所需输出的示例,允许大规模语言模型从这些示例中学习,并在新输入上执行任务。该方法被归类为简单的语境内学习(ICL)技术,提示模板作为样本呈现;FS-𝑋 显示了提示中的𝑋 个语境知识实例。本文不讨论 FSD 提示,因为生成的描述包含大量标记,可能超出大规模语言模型的输入限制。
最近流行的 ICL 技术包括思维链(CoT)、思维树(ToT)、思维图(GoT)和检索增强生成(RaG)。从理论上讲,这些技术可以支持复杂的任务,并包含大量的知识背景。然而,早期实验表明,CoT、ToT 和 GoT 在分子特性预测任务中的表现明显较差。这归因于设计适当的链式思维需要扎实的专业知识;RaG 的实现不稳定,查询速度慢,性能不如 FS。作者认为这是由于信息检索系统的质量造成的,并计划在今后的研究中对此进行更详细的讨论。
此外,本文还介绍了为目标分子 M𝑡𝑠𝑡生成预测的预测模型。本文讨论了大规模语言模型(LLM)、语言模型(LM)和基于图神经网络(GNN)的方法,以提供分子信息的全面视角。
基于大语言模型的方法将根据上述模板生成的提示作为输入,并根据指定格式生成答案。其中,LLMSolo 将基于 IF、IP、IE 和 FS 模板的查询作为输入,而 LLMDuo 则将基于 IFD、IPD 和 IED 模板的查询作为输入。
语言模型根据可用的文本信息生成预测。例子包括大规模语言模型提供的 SMILES 字符串、描述和回复。实验结果表明,使用描述的语言模型的性能无法与其他设置相比。因此,本文采用了两种设计:一种是仅将 SMILES 字符串作为输入(LMSolo),另一种是由大规模语言模型提供 SMILES 字符串和响应(LMDuo)。
图神经网络模型是分子性质预测任务中最先进的方法,因为它们能有效捕捉分子的几何结构信息。此外,在语言模型的帮助下,可用的文本信息可以转换成附加特征,然后输入图神经网络模型。
特别是,语言模型的灵活性允许将文本信息转换为嵌入信息,从而使图神经网络模型能够灵活地纳入来自不同角度的信息。本文采用了三种设计,即 GNNSolo、GNNDuo 和 GNNTrio,如下图所示(转载)。
试验
本节介绍实证研究和分析,以评估大规模语言模型在分子预测任务中的有效性。分析的重点是特别具有挑战性的分子图性质预测任务。
首先介绍实验设置。我们使用了机器学习研究中常用的六个基准分子特性预测数据集。这些数据集包括:ogbg-molbace、ogbg-molbbbp、ogbg-molhiv、ogbg-molesol、ogbg-molfreesolv 和 ogbg-mollipo。下表概述了所收集的数据集。
为了研究大规模语言模型在分子预测任务中的有效性,我们还考虑了两类不同的机会学习模型:第一类是只将文本信息作为输入的语言模型,使用 DeBERTa;第二类是捕捉这些信息的图神经网络,我们考虑了两种经典的图神经网络变体 GCN 和 GIN。我们考虑了两种经典的图神经网络变体:GCN 和 GIN。这些框架如下图所示。
本文重点讨论大规模语言模型参数固定且系统可在黑盒环境中使用的情况。在这种情况下,Llama-2-7b、Llama-2-13b、GPT-3.5 和 GPT-4 被用作大规模语言模型,其中 GPT-3.5 是大多数实验中的主要大规模语言模型。这些模型来自官方 API 或官方实现。
机器学习预测模型是根据官方实施方案实现的。例如,我们采用 OGB 基准排行榜上的图神经网络模型变体的可用代码;对于 DeBERTa,我们采用官方实现并将其纳入管道。对于大型语言模型,我们调用由 OpenAI 提供的 API 或官方实现,并使用默认超参数设置。
接下来是评估过程的工作流程。下图给出了一个概览。传统的评估工作流程是评估模型在下游任务中的性能,而这次还分析了大规模语言模型的响应一致性。
大规模语言模型会造成知识错觉(幻觉),并可能产生偏离用户预期的回答。因此,我们计算了大规模语言模型中遵循所需格式的回答比例(回答一致性)。为了确保比较的公平性,我们采用了 Hu 等人提供的固定分割方法。这确保了不同实验中评估条件的一致性,并允许对不同模型进行有意义的比较。
初步研究还利用 ogbg-molhiv 数据集评估了各种大规模语言模型的效果。提示是根据模板(IP、IPD、IE、IED、FS-1、FS-2 和 FS-3)生成的。如下图所示,在所有评估指标上,GPT 模型都优于 Llama 模型,表现出一致的性能。
这表明,GPT 模型在分子预测任务中更具优势。然而,GPT-4 应用程序接口的使用成本是 GPT-3.5 的 20 倍,响应时间也比 GPT-3.5 慢 10 倍。因此,出于性能和计算效率的考虑,本文采用 GPT-3.5 作为默认的大规模语言模型。
下表显示了对六个数据集的分析结果。结果显示,LLM 一直不如三种 ML 模型。这表明,作为分子预测任务的专家,依赖大规模语言模型可能是不够的。有必要了解大规模语言模型的局限性,并探索提高预测准确性的替代方法。
目前的大规模语言模型依赖于非结构化文本,这限制了它们将分子几何结构作为输入的能力。为了解决这一限制,Fatemi 等人提出了一种将图形结构编码成文本的方法。然而,上表中的结果显示,在提示中添加解释可能不会提高性能,反而会降低性能。他们认为这是由于额外的标记分散了注意力,增加了大规模语言模型的复杂性。
下表(转载于后)中的结果显示,整合了几何结构的模型优于未整合几何结构的模型。现有的大规模语言模型很难将几何信息直接整合到提示中,因为生成的解释中的词块数量超过了限制条件。
论文指出,应对这一挑战对未来研究非常重要。可能的解决方案包括令牌管理技术、复杂的提示工程策略或可处理多种输入表示的替代模型架构。这将使大规模语言模型能够更好地捕捉分子的几何复杂性,并提高其在化学建模任务中的预测能力。
除了将大规模语言模型直接用于分子预测任务之外,我们还探索了将这些模型与现有机器学习模型集成的潜在优势。按照下图所示的框架(如下图所示),机器学习模型(如图神经网络)的输入特征与大规模语言模型生成的响应相辅相成。
下面两个表格中的结果表明,引入大规模语言模型的响应作为额外的输入特征可显著提高预测性能。这表明,使用大规模语言模型生成的响应可以补充传统机器学习模型捕获的信息,并提高预测精度。这种混合方法是推动分子性质预测技术发展的一个很有前途的方向。
下表 显示了分子图形特性在六个数据集(ogbg-molbace、ogbg-molbbbp、ogbg-molhiv、ogbg-molesol、ogbg-molfreesolv、ogbg-mollipo )上的预测性能,并遵循了 Duo 管道:ogbg-molbace、ogbg-molbbbp、ogbg-molhiv、ogbg-molesol、ogbg-molfreesolv、ogbg-mollipo 。它遵循 Duo 流程。分类任务用 ROC-AUC 进行评估(↑:越高越好),回归任务用 RMSE 进行评估(↓:越低越好)。每个模型的最佳性能以下划线表示,最佳总体性能以粗体表示。
下表还显示了分子图形特性在六个数据集(ogbg-molbace、ogbg-molbbbp、ogbg-molhiv、ogbg-molesol、ogbg-molfreesolv、ogbg-mollipo)中的预测性能,这些数据集遵循 Trio管道。分类任务用 ROC-AUC 进行评估(↑:越高越好),回归任务用 RMSE 进行评估(↓:越低越好)。每个模型的最佳性能以下划线表示,总体最佳性能以粗体表示。
总结
本文就大规模语言模型处理分子相关任务的能力提出了重要见解:对六个基准数据集的综合分析表明,大规模语言模型在预测分子任务中的竞争力低于现有的机器学习模型。显然,它们的竞争力低于学习模型。此外,研究人员还提出了利用大规模语言模型作为补充工具的潜力,表明将大规模语言模型与现有机器学习模型相结合可以提高预测准确性。这为大规模语言模型与传统机器学习模型的有效结合提供了一种很有前景的方法。
这项工作凸显了大规模语言模型目前在分子相关任务中的局限性,同时也为未来的研究开辟了新的方向。特别是,它探索了创新方法,将大规模语言模型与特定领域的知识和结构信息更好地整合在一起,从而有可能缩小观察到的性能差距。这篇论文让人们更好地了解了大规模语言模型在分子相关任务中的优缺点,并为其在化学、生物学及相关领域的实际应用提出了明智的策略建议。
除了分子预测任务,未来还有许多其他有前景的研究方向。特别是,解决大规模语言模型在理解分子几何结构方面的局限性非常重要。大规模语言模型无法捕捉此类结构的微妙之处,往往会导致结果不准确。克服这一局限,加强大规模语言模型对分子几何结构的理解,对于扩大大规模语言模型在分子任务中的应用至关重要。
尽管本文提出了将大规模语言模型与传统机器学习模型相结合的简单而有效的框架,但在这方面仍有进一步完善方法的空间。设计一个复杂的框架,将大规模语言模型与现有的机器学习模型无缝集成,是未来研究的一个很有前景的方向,可以提高预测性能和模型的可解释性。
开发专用于分子的大规模语言模型也被认为非常重要。尽管大规模语言模型在许多任务中不如基线模型,但它们能从有限的样本中推导出解决方案,这表明了通用智能在分子领域的潜力。不过,目前的大规模语言模型在化学任务中表现出明显的幻觉(晕轮),表明还有改进的余地。为了提高大规模语言模型解决实际化学问题的效率,我们需要继续开发大规模语言模型,并研究如何减少幻觉(晕轮)。
相关文章:

评估大语言模型(LLM)在分子预测任务能够理解分子几何形状性能
摘要 论文地址:https://arxiv.org/pdf/2403.05075 近年来,机器学习模型在各个领域越来越受欢迎。学术界和工业界都投入了大量精力来提高机器学习的效率,以期实现人工通用智能(AGI)。其中,大规模语言模型&a…...
如何查看电脑刷新率
Windows 系统 通过显示设置查看: 右键点击桌面空白处,选择 “显示设置”。在打开的窗口中,找到 “高级显示设置”。点击 “显示适配器属性”。在弹出的窗口中,选择 “监视器” 选项卡,即可看到当前的屏幕刷新率。使用 …...
mysql集群MHA方式部署
1. 基本信息 部署机器角色部署路径192.168.242.71MySQL-Mater MHA-NodeMySQL: /alidata1/mysql-8.0.28192.168.242.72MySQL-Slave MHA-NodeMHA-Node: /alidata1/admin/tools/mha4mysql-node-0.58192.168.242.73MySQL-Slave MHA-Node192.168.242.74MHA-ManagerMHA-Manager: …...

第十七章 使用 MariaDB 数据库管理系统
1. 数据库管理系统 数据库是指按照某些特定结构来存储数据资料的数据仓库。在当今这个大数据技术迅速崛起的年代,互联网上每天都会生成海量的数据信息,数据库技术也从最初只能存储简单的表格数据的单一集中存储模式,发展到了现如今存储海量…...

rabbitmq 安装延时队列插件rabbitmq_delayer_message_exchange(linux centOS 7)
1.插件版本 插件地址:Community Plugins | RabbitMQ rabbitmq插件需要对应的版本,根据插件地址找到插件 rabbitmq_delayer_message_exchange 点击Releases 因为我rabbitmq客户端显示的版本是: 所以我选择插件版本是: 下载 .ez文…...

Unity性能优化---动态网格组合(一)
网格组合是将 Unity 中的多个对象组合为一个对象的技术。因此,在多物体的场景中,使用网格组合,会有效的减少小网格的数量,最终将得到一个包含许多小网格的大网格游戏对象,这将提高游戏或模拟器的性能。在Unity 的 “St…...

Appium:安装uiautomator2失败
目录 1、通过nmp安装uiautomator2:失败 2、通过 Appium 的平台直接安装驱动程序 3、通过pip 来安装 uiautomator2 1、通过nmp安装uiautomator2:失败 我先是通过npm安装的uiautomator2,也显示已经安装成功了: npm install -g …...

电子信息工程自动化 单片机彩灯控制
摘要 随着社会经济和科学技术的不断进步,人们在保持发展的同时,环境带给人类的影响已经不足以让我们忽视,所以城市的美化问题慢慢的进入了人们的眼帘,PLC的产生给带电子产品带来了巨大变革,彩灯的使用在城市的美化中变…...

word poi-tl 表格功能增强,实现表格功能垂直合并
目录 问题解决问题poi-tl介绍 功能实现引入依赖模版代码效果图 附加(插件实现)MergeColumnData 对象MergeGroupData 类ServerMergeTableData 数据信息ServerMergeTablePolicy 合并插件 问题 由于在开发功能需求中,word文档需要垂直合并表格&…...

LSTM-CNN-BP-RF-SVM五模型咖喱融合策略混合预测模型
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 LSTM-CNN-BP-RF-SVM五模型咖喱融合策略混合预测模型 Matlab代码注释清晰。 程序设计 完整程序和数据获取方式:私信博主回复LSTM-CNN-BP-RF-SVM五模型咖喱融合策略混合预测模型(Matlab&#…...
《鸿蒙开发-答案之书》 怎么设置Json字段的别名
《鸿蒙开发-答案之书》 怎么设置Json字段的别名 Android设置别名用的是SerializedName(“msg”),那鸿蒙用的是啥,有点懵不知道。 鸿蒙得引入第三方库:ohpm install class-transformer 然后用Expose({ name: ‘first-name’ }) 示例代码&…...
ftp服务器搭建-安装、配置及验证
ftp服务器搭建-安装、配置及验证 #安装 sudo apt-get install vsftpd #配置文件 cat > /etc/vsftpd.conf << "EOF" listenNO listen_ipv6YES anonymous_enableNO local_enableYES write_enableYES dirmessage_enableYES use_localtimeYES xferlog_enable…...
鸿蒙应用获取wifi连接的ip地址(官方文档获取的格式转换成192.168.1.xxx格式)
目录 一.背景 二.官网流程 wifiManager.getLinkedInfo9+ 三.转换成192.168.xxx.xxx格式 一.背景 本次来学习如何获取到鸿蒙设备连接wifi后的ip地址,由于官网文档中获取的ip地址和我们平时看到的192:168:xxx:xxx有所不同,需要进行下转换,所以记录下,如下的流程是在OpenH…...

c++数据结构算法复习基础--11--高级排序算法-快速排序-归并排序-堆排序
高阶排序 1、快速排序 冒泡排序的升级算法 每次选择一个基准数,把小于基准数的放到基准数的左边,把大于基准数的放到基准数的右边,采用 “ 分治算法 ”处理剩余元素,直到整个序列变为有序序列。 最好和平均的复杂度:…...
人工智能学习路线详细规划
一、引言 在当今科技飞速发展的时代,人工智能已成为引领未来的关键技术之一。无论是为了追求职业发展的新机遇,还是出于对这一前沿领域的浓厚兴趣,深入学习人工智能都是一个极具价值的选择。本文将为大家精心规划一条人工智能学习路线&#…...

深度学习之视觉处理
CNN 视觉处理三大任务:分类、目标检测、图像分割上游:提取特征,CNN下游:分类、目标、分割等,具体的任务 概述 卷积神经网络是深度学习在计算机视觉领域的突破性成果。在计算机视觉领域, 往往我们输入的图像都很大&am…...

遇到问题:hive中的数据库和sparksql 操作的数据库不是同一个。
遇到的问题: 1、hive中的数据库和sparksql 操作的数据库不同步。 观察上面的数据库看是否同步 !!! 2、查询服务器中MySQL中hive的数据库,发现创建的位置没有在hdfs上,而是在本地。 这个错误产生的原因是&…...
Spring Boot与Spring Security集成:前后分离认证流程的优化实践
在当前的Web开发领域,前后分离架构已经成为一种流行趋势。这种架构将前端和后端进行解耦,前端负责用户界面和交互逻辑,后端则负责数据处理和业务逻辑。在前后分离的项目中,如何安全、高效地实现用户认证是一个关键问题。本文将深入…...

设计模式——Chain(责任链)设计模式
摘要 责任链设计模式是一种行为设计模式,通过链式调用将请求逐一传递给一系列处理器,直到某个处理器处理了请求或所有处理器都未能处理。它解耦了请求的发送者和接收者,允许动态地将请求处理职责分配给多个对象,支持请求的灵活传…...
HarmonyOS(63) ArkUI 自定义占位组件NodeContainer
NodeContainer 1、前言2、NodeContainer和NodeController3、示例代码3.1、创建@Builder3.2、 创建NodeController3.3、 使用NodeCtroller4、NodeContainer的作用5、FrameNode简介6、BuilderNode简介7、参考资料1、前言 在HarmonyOS(62) ArkUI @Reusable组件复用原理讲了组件复…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...