目录

一:题目链接

二:题目思路

三:代码实现


一:题目链接

        理解题目需要注意,如果两个四元组元素一一对应,则认为两个四元组重复,选择其中一个四元组即可。比如 [ 0 , 1 , 0 ,  2] 和 [ 1  ,  0  ,2, 0 ] ,那么认为这两个四元组是相同的。选择其中一个即可。

二:题目思路

        我i们的思路是 排序 + 固定数字 + 固定数字 + 双指针 来解决。

        首先,将数组排好序后,我们确定一个固定数 a 从 数组起始位置开始 ,另一个固定数 b 从 a 的下一位开始,再定义两个指针 left 和 right ,如图:

        先看固定数 b 和这两个指针,后续思路就是我们之前所讲的 “三数之和” , (务必理解这篇文章后再看下面思路),只不过这里的判断条件改成 nums[left] + nums[right] == target - a - b;并且过程要注意,最外层的固定数 a 也需要去重。所以大致思路也就是 “三数之和” 最外层再套了个 for 循环。

三:代码实现

        //存储结果集List<List<Integer>> ret = new ArrayList<>();//排序数组Arrays.sort(nums);int n = nums.length;//小优化if (n < 4 || (long) nums[0] + nums[1] + nums[2] + nums[3] > target) {return ret;}for (int i = 0; i < n;) { //固定数字 afor (int j = i + 1; j < n;) { //固定数字 blong sum = (long) target - nums[i] - nums[j];int left = j + 1;int right = n - 1;while (left < right) {if ((long) nums[left] + nums[right] < sum) {left++;} else if ((long) nums[left] + nums[right] > sum) {right--;} else {//添加当前符合条件的四元组ret.add(Arrays.asList(nums[i], nums[j], nums[left],nums[right]));left++;right--;while (left < right && nums[left] == nums[left - 1]) {left++;}while (left < right && nums[right] == nums[right + 1]) {right--;}}}//去重 jj++;while (j < n && nums[j] == nums[j - 1]) {j++;}}//去重 ii++;while (i < n && nums[i] == nums[i - 1]) {i++;}}return ret;

        小优化代码解释:如果当前数组元素不够 四个,或者数组最小的四个数加起来都比 target 大,就可以直接返回了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/96025.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/96025.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/96025.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【序列晋升】29 Spring Cloud Task 微服务架构下的轻量级任务调度框架

Spring Cloud Task作为微服务架构中的轻量级任务调度框架&#xff0c;为开发人员提供了一种构建短生命周期微服务任务的便捷方式。它允许开发者快速创建、执行和管理一次性任务或短期批处理作业&#xff0c;任务执行完成后自动关闭以释放系统资源&#xff0c;避免了传统长期运行…

【1分钟速通】 HTML快速入门

HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09; 是构建网页的基础语言。它通过 标签&#xff08;Tag&#xff09; 来描述网页的结构和内容&#xff0c;常与 CSS&#xff08;负责样式 – <style></style>&#xff09;和 JavaScr…

【GeoServer】WMS GetFeatureInfo URL 逐个参数解释

我来把你构造的这个 WMS GetFeatureInfo URL 逐个参数解释一下&#xff0c;方便你理解&#xff1a;http://127.0.0.1:8090/geoserver/xxxx/wms? SERVICEWMS& VERSION1.1.1& REQUESTGetFeatureInfo& QUERY_LAYERSloess:yourLayer& LAYERSloess:yourLayer& …

OBS直播教程:点歌直播间怎么弄?直播点歌用什么软件?

OBS直播教程&#xff1a;点歌直播间怎么弄&#xff1f;直播点歌用什么软件&#xff1f; 第一步&#xff1a;安装OBS直播软件&#xff0c;如果你电脑已经安装了OBS&#xff0c;请直接看第二步 OBS直播软件下载地址①&#xff1a; https://d.obscj.com/obs-Studio-29.1.3-Full-…

【数据库】Redis详解:内存数据库与缓存之王

什么是Redis&#xff1f; Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的、基于内存的数据结构存储系统&#xff0c;可以用作数据库、缓存和消息代理。它支持多种数据结构&#xff0c;如字符串、哈希、列表、集合、有序集合等&#xff0c;具有极高的性能和…

【iOS】 单例模式

1. 认识单例模式首先让我们先看下关于单例模式的定义&#xff08;来自于《设计模式》(Addison-Wesley,1994)&#xff09;一个类有且仅有一个实例&#xff0c;并且自行实例化向整个系统提供。如果说每一个人都是一个类&#xff0c;那么从他出生开始&#xff0c;他就是生活中的唯…

多目标轮廓匹配

前面我们使用模板匹配&#xff0c;得到的结果都是一个图&#xff0c;那么如果我们图片中有许多我们的目标&#xff0c;那么该如何找出来呢&#xff1f;如上我们图片中有许多箭头和我们的模板一致&#xff0c;只不过方向不对&#xff0c;那么该如何匹配呢&#xff1f;图片和模板…

【C++】简单介绍lambda表达式

各位大佬好&#xff0c;我是落羽&#xff01;一个坚持不断学习进步的学生。 如果您觉得我的文章还不错&#xff0c;欢迎多多互三分享交流&#xff0c;一起学习进步&#xff01; 也欢迎关注我的blog主页: 落羽的落羽 文章目录一、 什么是lambda表达式二、 表达式语法三、lambd…

磁共振成像原理(理论)4:自由进动和弛豫 (Free Precession and Relaxation)

当磁化自旋系统被射频脉冲扰动而偏离其热平衡态后&#xff0c;一旦移除外部激励并给予足够时间&#xff0c;系统将根据热力学定律返回平衡态。这一过程包含三个特征现象&#xff1a; (a) 自由进动——宏观磁化矢量 (M⃗\vec{M}M) 绕( B0⃗\vec {B_0}B0​​ )场的进动&#xff1…

ubuntu 20.04 安装spark

安装openjdk21 下载 wget https://download.java.net/openjdk/jdk21/ri/openjdk-2135_linux-x64_bin.tar.gz解压 tar -xvf openjdk-2135_linux-x64_bin.tar.gzsudo mv jdk-21/ /opt/jdk-21/设置环境变量 echo export JAVA_HOME/opt/jdk-21 | sudo tee /etc/profile.d/java2…

第三方区块链应用测评:【多签钱包合约安全评估_阈值签名机制与私钥存储安全性测试】

阈值签名机制安全测试密码学审计 采用门限签名方案&#xff08;TSS&#xff09;的多签钱包需验证其阈值BLS签名或ECDSA签名算法的正确性。测试重点包括&#xff1a;分布式密钥生成&#xff08;DKG&#xff09;过程的保密性&#xff08;无密钥信息泄露&#xff09;、签名碎片验证…

大模型处理长文档的挑战和解决方案?

当前&#xff0c;AI 应用正处于极速发展阶段&#xff0c;大语言模型&#xff08;LLM&#xff09;与检索增强生成&#xff08;RAG&#xff09;系统已成为构建智能问答、知识管理等高阶 AI 应用的核心引擎&#xff0c;被广泛应用于金融分析、学术研究、企业合规等多个领域。然而&…

JavaWeb--day1--HTMLCSS

(以下内容全部来自上述课程及课件) web开发介绍 1. 什么是web&#xff1f; Web&#xff1a;全球广域网&#xff0c;也称为万维网&#xff0c;能够通过浏览器访问的网站。 2. Web网站的工作流程 3. Web标准 Web标准也称为网页标准&#xff0c;由一系列的标准组成&#xf…

OpenEuler安装gitlab,部署gitlab-runner

目录 一、安装gitlab 二、安装部署docker设置源 三、下载部署runner ​编辑 四、构建CI/CD 一、安装gitlab 1.查看OpenEuler版本 [rootlocalhost ~]# cat /etc/os-release NAME"openEuler" VERSION"24.03 (LTS-SP1)" ID"openEuler" VERSI…

实战项目-----在图片 hua.png 中,用红色画出花的外部轮廓,用绿色画出其简化轮廓(ε=周长×0.005),并在同一窗口显示

实战项目实现以下功能&#xff1a;对图片 hua.png 进行轮廓提取&#xff0c;并在同一窗口中完成以下两个绘制操作&#xff1a;用红色画出花的外部轮廓&#xff08;即最外层轮廓&#xff09;用绿色画出该轮廓的近似多边形&#xff0c;其中近似精度参数 ε 设置为轮廓周长的 0.00…

开源鸿蒙北向框架开发:系统服务理论详解

系统服务的启动 基本可以认为&#xff1a;OpenHarmony 的系统服务进程都是“由 init 直接或间接拉起”的。 直接方式&#xff1a; init 按 /system/etc/init/.cfg 启动可执行&#xff08;如 /system/bin/sa_main、/system/bin/samgr 等&#xff09;&#xff0c;这些进程的 PPid…

龙虎榜——20250909

上证指数今天缩量收阴线&#xff0c;跌破10日均线&#xff0c;目前日线总体处于高位宽幅震荡中&#xff0c;小级别暂未明确方向&#xff0c;指数面临方向选择&#xff0c;需要注意高位股的风险。 深证指数今天缩量收阴线&#xff0c;跌破5日均线&#xff0c;接下来几天方向的选…

基于dijkstra算法的WSN网络MAC协议matlab仿真,分析网络延迟与网络开销

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.部分程序 4.算法理论概述 5.完整程序 1.程序功能描述 无线传感器网络&#xff08;WSN, Wireless Sensor Network&#xff09;是由大量低成本、低功耗的传感器节点组成&#xff0c;通过无线通信实现数据采集、传输与…

ES数据库启动时可以设置1G一下内存吗

可以&#xff0c;但强烈不建议在生产环境中这样做。ES 7.0 版本确实可以设置小于 1GB 的堆内存&#xff0c;但这会带来严重的性能问题和稳定性风险。 快速回答 # 最小化配置示例 - 仅用于测试或开发环境 export ES_JAVA_OPTS"-Xms512m -Xmx512m" ./bin/elasticsearch…

TI-92 Plus计算器:单位换算功能介绍

1 TI-92 Plus计算器&#xff1a;单位换算功能介绍 TI-92 Plus 内置了全面的单位换算功能&#xff0c;支持长度、质量、时间、温度、面积、体积、速度等数十种物理量的单位转换&#xff0c;操作直观&#xff0c;无需手动输入换算系数。以下是具体使用方法、示例及功能特点&#…