力扣【四数之和】
一、题目描述
18. 四数之和
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):
0 <= a, b, c, d < na、b、c和d互不相同nums[a] + nums[b] + nums[c] + nums[d] == target
你可以按 任意顺序 返回答案 。

二、题目解析
算法思想:排序+双指针
1、依次固定一个数a;
2、在a后面的区间内,用“三数之和”找到三个数,使用这三个数的和等于target - a即可
同理,对于三数之和的算法:
1、依次固定一个数b;
2、在b后面的区间内,利用“双指针”找到两个数,是这两个数的和等于target - a - b
处理细节问题:
1、不重复
注意这里的去重和三数之和不同,这里需要多一组去重,在确定a时也是需要判断是否重复,其余去重操作和判断三数之和是一样。
2、不漏
与三数之和一样,在找到满足题目条件的一组元素之后,需要继续寻找。

注意:
这里的数据有溢出的风险,不开long long见祖宗~

三、原码
class Solution {
public:vector<vector<int>> fourSum(vector<int>& nums, int target) {vector<vector<int>> ret;//1、先排序sort(nums.begin(),nums.end());//2、利用双指针解决int n = nums.size();for(int i = 0;i<n;){//下面是三数之和for(int j = i+1;j<n;){//防止数据溢出,开long longlong long target2 = (long long)target - nums[i] - nums[j];int left = j+1;int right = n-1;while(left < right){int sum = nums[left] + nums[right];if(sum > target2) right--;else if(sum < target2) left++;else{ret.push_back({nums[i],nums[j],nums[right],nums[left]});left++;right--;//去重left rightwhile(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;}
};
相关文章:
力扣【四数之和】
一、题目描述 18. 四数之和 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复&#x…...
IMX6LL|linux设备驱动模型
linux设备驱动模型 为什么需要设备驱动模型 早期内核(2.4之前)没有统一的设备驱动模型,但照样可以用2.4~2.6期间使用devfs,挂载在/dev目录。 需要在内核驱动中创建设备文件(devfs_register),命名死板 2.6以后使用sys…...
2023年的技术总结和工作反思
一、回顾2023年 回顾自己的2023年,还是发生了很多的变化。在大学毕业,就来到了芯翼参加工作,在这里也遇到了很多的前辈和小伙伴,收获工作的同时也收获了友情。但是,随着公司发展战略的变化,公司的人员架构…...
Stable Diffusion中的Embeddings
什么是Embeddings? Embeddings是一种数学技术,它允许我们将复杂的数据(如文本或图像)转换为数值向量。这些向量是高维空间中的点,可以捕捉数据的关键特征和属性。在文本处理中,例如,embeddings可…...
如何快速打开github
作为一个资深码农,怎么能不熟悉全球最大的同性交友社区——github呢,但头疼的是github有时能打开,有时打不开,这是怎么回事? 其实问题出在github.com解析DNS上,并不是需要FQ。下面提供一个方法,…...
【sql/python】表中某列值以列表聚合
需求背景: 有一个表含有两个字段 “ID”,“VALUE” 1,香蕉 1,苹果 2,橘子 3,香蕉 3,苹果 3,橘子 目标要求:将每个ID的VALUE列聚合成一个字符串列表 “ID”,“VALUE” 1,[香蕉,苹果] 2,[橘子] 3,[香蕉,苹果,橘子] 一、SQL使用 LISTAGG函数聚合方式 ---将…...
大模型实战营Day6 作业
基础作业 使用 OpenCompass 评测 InternLM2-Chat-7B 模型在 C-Eval 数据集上的性能 环境配置 conda create --name opencompass --clone/root/share/conda_envs/internlm-base source activate opencompass git clone https://github.com/open-compass/opencompass cd openco…...
C#,入门教程(20)——列表(List)的基础知识
上一篇: C#,入门教程(19)——循环语句(for,while,foreach)的基础知识https://blog.csdn.net/beijinghorn/article/details/124060844 List顾名思义就是数据列表,区别于数据数组(arr…...
【蓝桥杯日记】复盘篇一:深入浅出顺序结构
🚀前言 本期是一篇关于顺序结构的题目的复盘,通过复盘基础知识,进而把基础知识学习牢固!通过例题而进行复习基础知识。 🚩目录 前言 1.字符三角形 分析: 知识点: 代码如下 2. 字母转换 题目分析: 知…...
尚无忧【无人共享空间 saas 系统源码】无人共享棋牌室系统源码共享自习室系统源码,共享茶室系统源码
可saas多开,非常方便,大大降低了上线成本 UNIAPPthinkphpmysql 独立开源! 1、定位功能:可定位附近是否有店 2、能通过关键字搜索现有的店铺 3、个性轮播图展示,系统公告消息提醒 4、个性化功能展示,智能…...
SQL Server 恢复软件
Datanumen SQL Server 软件主要特点 支持 Microsoft SQL Server 2005、2008、2008 R2、2012、2014、2016、2017、2019、2022 。 恢复表中的架构/结构和数据。 恢复所有数据类型,包括 ASCII 和 Unicode XML 数据类型。 恢复稀疏列。 恢复数据库表中已删除的记录…...
奇安信天擎 rptsvr 任意文件上传漏洞复现
0x01 产品简介 奇安信天擎是奇安信集团旗下一款致力于一体化终端安全解决方案的终端安全管理系统(简称“天擎”)产品。通过“体系化防御、数字化运营”方法,帮助政企客户准确识别、保护和监管终端,并确保这些终端在任何时候都能可信、安全、合规地访问数据和业务。天擎基于…...
Linux-nginx(安装配置nginx、配置反向代理、Nginx配置负载均衡、动静分离)
关于代理 正向代理: 客户明确知道自己访问的网站是什么 隐藏客户端的信息 目录 关于代理 一、Nginx的安装与配置 1、安装依赖 2、安装nginx (1)上传压缩包到目录 /usr/nginx里面 (2)解压文件 (3)…...
阿里云GPU服务器ECS实例规格详细说明
阿里云GPU服务器提供GPU加速计算能力,GPU卡支持A100、V100、T4、P4、P100、A10等,NVIDIA V100,GPU实例规格是什么意思?如搭载NVIDIA V100的ecs.gn6v-c8g1.2xlarge、A10卡ecs.gn7i-c32g1.8xlarge、T4卡ecs.gn6i-c4g1.xlarge、P4卡e…...
Kafka为什么在消息积压时不能直接通过消费者水平扩容来提升消费速度?
我们知道当消息生产者生产的速度快于消费者的消费速度时,会产生大量的消息积压,大多数人的想法是增加消费者的数量来提升消费速度,这个想法在RocketMQ中是可行的,但是在Kafka中不一定可行。为了更方便地分析问题,我们先…...
“揭秘Maven:如何成为大数据项目的管理能手?“
介绍:Maven是一个项目管理和构建自动化工具,广泛应用于Java项目中。具体来说:项目对象模型(POM):Maven通过一个名为POM的模型来描述项目信息,包括项目的坐标、依赖关系、插件目标等。这个模型通…...
基于BERT对中文邮件内容分类
用BERT做中文邮件内容分类 项目背景与意义项目思路数据集介绍环境配置数据加载与预处理自定义数据集模型训练加载BERT预训练模型开始训练 预测效果 项目背景与意义 本文是《用BERT做中文邮件内容分类》系列的第二篇,该系列项目持续更新中。系列的起源是《使用Paddl…...
【EFCore仓储模式】介绍一个EFCore的Repository实现
阅读本文你的收获 了解仓储模式及泛型仓储的优点学会封装泛型仓储的一般设计思路学习在ASP.NET Core WebAPI项目中使用EntityFrameworkCore.Data.Repository 本文中的案例是微软EntityFrameworkCore的一个仓储模式实现,这个仓储库不是我自己写的,而是使…...
oracle篇—19c新特性自动索引介绍
☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…...
稳定性——JE流程
1. RuntimeInit.commonInit() 上层应用都是由Zygote fork孵化出来的,分为system_server进程和普通应用进程进程创建之初会设置未捕获异常的处理器,当系统抛出未捕获的异常时候都会交给异常处理器RuntimeInit.java的commonInit方法设置UncaughtHandler …...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...
