当前位置: 首页 > news >正文

力扣【四数之和】

 一、题目描述

18. 四数之和

给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):

  • 0 <= a, b, c, d < n
  • abc 和 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 &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&#xff0c;则认为两个四元组重复&#x…...

IMX6LL|linux设备驱动模型

linux设备驱动模型 为什么需要设备驱动模型 早期内核&#xff08;2.4之前&#xff09;没有统一的设备驱动模型&#xff0c;但照样可以用2.4~2.6期间使用devfs&#xff0c;挂载在/dev目录。 需要在内核驱动中创建设备文件(devfs_register)&#xff0c;命名死板 2.6以后使用sys…...

2023年的技术总结和工作反思

一、回顾2023年 回顾自己的2023年&#xff0c;还是发生了很多的变化。在大学毕业&#xff0c;就来到了芯翼参加工作&#xff0c;在这里也遇到了很多的前辈和小伙伴&#xff0c;收获工作的同时也收获了友情。但是&#xff0c;随着公司发展战略的变化&#xff0c;公司的人员架构…...

Stable Diffusion中的Embeddings

什么是Embeddings&#xff1f; Embeddings是一种数学技术&#xff0c;它允许我们将复杂的数据&#xff08;如文本或图像&#xff09;转换为数值向量。这些向量是高维空间中的点&#xff0c;可以捕捉数据的关键特征和属性。在文本处理中&#xff0c;例如&#xff0c;embeddings可…...

如何快速打开github

作为一个资深码农&#xff0c;怎么能不熟悉全球最大的同性交友社区——github呢&#xff0c;但头疼的是github有时能打开&#xff0c;有时打不开&#xff0c;这是怎么回事&#xff1f; 其实问题出在github.com解析DNS上&#xff0c;并不是需要FQ。下面提供一个方法&#xff0c;…...

【sql/python】表中某列值以列表聚合

需求背景&#xff1a; 有一个表含有两个字段 “ID”,“VALUE” 1,香蕉 1,苹果 2,橘子 3,香蕉 3,苹果 3,橘子 目标要求&#xff1a;将每个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)的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(19)——循环语句&#xff08;for&#xff0c;while&#xff0c;foreach&#xff09;的基础知识https://blog.csdn.net/beijinghorn/article/details/124060844 List顾名思义就是数据列表&#xff0c;区别于数据数组&#xff08;arr…...

【蓝桥杯日记】复盘篇一:深入浅出顺序结构

&#x1f680;前言 本期是一篇关于顺序结构的题目的复盘,通过复盘基础知识&#xff0c;进而把基础知识学习牢固&#xff01;通过例题而进行复习基础知识。 &#x1f6a9;目录 前言 1.字符三角形 分析&#xff1a; 知识点&#xff1a; 代码如下 2. 字母转换 题目分析: 知…...

尚无忧【无人共享空间 saas 系统源码】无人共享棋牌室系统源码共享自习室系统源码,共享茶室系统源码

可saas多开&#xff0c;非常方便&#xff0c;大大降低了上线成本 UNIAPPthinkphpmysql 独立开源&#xff01; 1、定位功能&#xff1a;可定位附近是否有店 2、能通过关键字搜索现有的店铺 3、个性轮播图展示&#xff0c;系统公告消息提醒 4、个性化功能展示&#xff0c;智能…...

SQL Server 恢复软件

Datanumen SQL Server 软件主要特点 支持 Microsoft SQL Server 2005、2008、2008 R2、2012、2014、2016、2017、2019、2022 。 恢复表中的架构/结构和数据。 恢复所有数据类型&#xff0c;包括 ASCII 和 Unicode XML 数据类型。 恢复稀疏列。 恢复数据库表中已删除的记录…...

奇安信天擎 rptsvr 任意文件上传漏洞复现

0x01 产品简介 奇安信天擎是奇安信集团旗下一款致力于一体化终端安全解决方案的终端安全管理系统(简称“天擎”)产品。通过“体系化防御、数字化运营”方法,帮助政企客户准确识别、保护和监管终端,并确保这些终端在任何时候都能可信、安全、合规地访问数据和业务。天擎基于…...

Linux-nginx(安装配置nginx、配置反向代理、Nginx配置负载均衡、动静分离)

关于代理 正向代理: 客户明确知道自己访问的网站是什么 隐藏客户端的信息 目录 关于代理 一、Nginx的安装与配置 1、安装依赖 2、安装nginx &#xff08;1&#xff09;上传压缩包到目录 /usr/nginx里面 &#xff08;2&#xff09;解压文件 &#xff08;3&#xff09…...

阿里云GPU服务器ECS实例规格详细说明

阿里云GPU服务器提供GPU加速计算能力&#xff0c;GPU卡支持A100、V100、T4、P4、P100、A10等&#xff0c;NVIDIA V100&#xff0c;GPU实例规格是什么意思&#xff1f;如搭载NVIDIA V100的ecs.gn6v-c8g1.2xlarge、A10卡ecs.gn7i-c32g1.8xlarge、T4卡ecs.gn6i-c4g1.xlarge、P4卡e…...

Kafka为什么在消息积压时不能直接通过消费者水平扩容来提升消费速度?

我们知道当消息生产者生产的速度快于消费者的消费速度时&#xff0c;会产生大量的消息积压&#xff0c;大多数人的想法是增加消费者的数量来提升消费速度&#xff0c;这个想法在RocketMQ中是可行的&#xff0c;但是在Kafka中不一定可行。为了更方便地分析问题&#xff0c;我们先…...

“揭秘Maven:如何成为大数据项目的管理能手?“

介绍&#xff1a;Maven是一个项目管理和构建自动化工具&#xff0c;广泛应用于Java项目中。具体来说&#xff1a;项目对象模型&#xff08;POM&#xff09;&#xff1a;Maven通过一个名为POM的模型来描述项目信息&#xff0c;包括项目的坐标、依赖关系、插件目标等。这个模型通…...

基于BERT对中文邮件内容分类

用BERT做中文邮件内容分类 项目背景与意义项目思路数据集介绍环境配置数据加载与预处理自定义数据集模型训练加载BERT预训练模型开始训练 预测效果 项目背景与意义 本文是《用BERT做中文邮件内容分类》系列的第二篇&#xff0c;该系列项目持续更新中。系列的起源是《使用Paddl…...

【EFCore仓储模式】介绍一个EFCore的Repository实现

阅读本文你的收获 了解仓储模式及泛型仓储的优点学会封装泛型仓储的一般设计思路学习在ASP.NET Core WebAPI项目中使用EntityFrameworkCore.Data.Repository 本文中的案例是微软EntityFrameworkCore的一个仓储模式实现&#xff0c;这个仓储库不是我自己写的&#xff0c;而是使…...

oracle篇—19c新特性自动索引介绍

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣…...

稳定性——JE流程

1. RuntimeInit.commonInit() 上层应用都是由Zygote fork孵化出来的&#xff0c;分为system_server进程和普通应用进程进程创建之初会设置未捕获异常的处理器&#xff0c;当系统抛出未捕获的异常时候都会交给异常处理器RuntimeInit.java的commonInit方法设置UncaughtHandler …...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...

数据挖掘是什么?数据挖掘技术有哪些?

目录 一、数据挖掘是什么 二、常见的数据挖掘技术 1. 关联规则挖掘 2. 分类算法 3. 聚类分析 4. 回归分析 三、数据挖掘的应用领域 1. 商业领域 2. 医疗领域 3. 金融领域 4. 其他领域 四、数据挖掘面临的挑战和未来趋势 1. 面临的挑战 2. 未来趋势 五、总结 数据…...