代码随想录|哈希表|09四数之和

devtools/2025/3/5 9:35:32/

leetcode:18. 四数之和 - 力扣(LeetCode)

题目

题意:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。

注意:

答案中不可以包含重复的四元组。

示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。 满足要求的四元组集合为: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ]

思路

跟上篇的三数之和异曲同工,就是在i的for循环前面再套一层for循环(假设为k),这样子就是固定k和i,然后L和R进行区间内的滑动。

class Solution
{
public:vector<vector<int>> fourSum(vector<int> &nums, int target){vector<vector<int>> result;sort(nums.begin(), nums.end());for (int k = 0; k < nums.size(); k++){if (nums[k] > target && nums[k] >= 0){break;}if (k > 0 && nums[k] == nums[k - 1]){continue;}for (int i = k + 1; i < nums.size(); i++){if (nums[i] + nums[k] > target && nums[i] + nums[k] >= 0){break;}if (i > k + 1 && nums[i] == nums[i - 1]){continue;}int left = i + 1, right = nums.size() - 1;while (left < right){int sum = nums[k] + nums[i] + nums[left] + nums[right];if (sum > target){right--;}else if (sum < target){left++;}else{result.push_back({nums[k], nums[i], nums[left], nums[right]});while (left < right && nums[right] == nums[right - 1]){right--;}while (left < right && nums[left] == nums[left + 1]){left++;}left++;right--;}}}}return result;}
};

总结

注意这里的target不是0,所以剪枝的条件需要改变。

在对i进行剪枝的时候,判断条件是:

if (nums[i] + nums[k] > target && nums[i] + nums[k] >= 0)

因为在两层for循环里面,累积值是两个数之和。

参考资料

 代码随想录

难在去重和剪枝!| LeetCode:18. 四数之和_哔哩哔哩_bilibili 


http://www.ppmy.cn/devtools/164714.html

相关文章

什么是RPC,和HTTP有什么区别?

RPC是Remote ProcedureCall的缩写&#xff0c;译为远程过程调用。要想实现RPC通常需要包含传输协议和席列化协议的实现。 而我们熟知的HTTP&#xff0c;他的中文名叫超文本传输协议&#xff0c;所以他就是一种传输协议。所以&#xff0c;我们可以认为RPC和HTTP并不是同一个维度…

SQL(1)

概述&#xff1a;SQL&#xff0c;结构化的查询语言&#xff0c;集DDL&#xff0c;DML&#xff0c;DCL于一体。高度的非过程化&#xff0c;只需要提出做什么&#xff0c;无需涉及具体的操作细节。SQL功能性极强&#xff0c;完成核心功能只用了9个动词。 SQL功能动词数据查询SEL…

大语言模型学习--本地部署DeepSeek

本地部署一个DeepSeek大语言模型 研究学习一下。 本地快速部署大模型的一个工具 先根据操作系统版本下载Ollama客户端 1.Ollama安装 ollama是一个开源的大型语言模型&#xff08;LLM&#xff09;本地化部署与管理工具&#xff0c;旨在简化在本地计算机上运行和管理大语言模型…

Vue前端开发- Vant之Card组件

业务组件是Vant的一大特点&#xff0c;特别是针对移动端商城开发的业务&#xff0c;有许多组件可以直接运用到通用商城的开发中&#xff0c;代码也十分简单&#xff0c;大大加快了应用的开发速度。 在众多的业务组件中&#xff0c;Card 卡片、Coupon 优惠券选择器和SubmitBar …

【MySQL】与MongoDB的区别,字符集,三范式,存储引擎InnoDB、MyISAM

MongoDB vs MySQL&#xff1a;区别与应用场景 1. 数据模型 MongoDB 非关系型&#xff08;NoSQL&#xff09;&#xff0c;存储的是 JSON 格式 的 文档&#xff08;Document&#xff09;。数据结构灵活&#xff0c;不要求每个文档有相同的字段&#xff0c;适合存储 动态变化的数…

【氮化镓】基于SiC脉冲I-V系统研究Schottky型p-GaN HEMT正栅极ESD机制

这篇文章题为《Investigating Forward Gate ESD Mechanism of Schottky-Type p-GaN Gate HEMTs Using a SiC-Based High-Speed Pulsed I-V Test System》,发表于《IEEE Electron Device Letters》2024年7月刊。研究重点是探讨肖特基型p-GaN门极高电子迁移率晶体管(HEMTs)在正…

【竞技宝】CS2-EPLS21:失之毫厘差之千里 TYLOO惜败

北京时间2025年3月4日&#xff0c;CS2的EPL第21赛季继续进行。昨日第二轮第二场比赛迎来2-0组TYLOO对阵GL。以下为本场比赛的详细战报。 图一荒漠迷城 GL 13-7 TYLOO 图一为TYLOO选图荒漠迷城&#xff0c;上半场TYLOO先做进攻方&#xff0c;手枪局&#xff0c;TYLOO采用拱门夹…

Stable Diffusion Prompt编写规范详解

Stable Diffusion Prompt编写规范详解 一、语法结构规范 &#xff08;一&#xff09;基础模板框架 [质量强化] [主体特征] [环境氛围] [风格控制] [镜头参数]质量强化&#xff1a;best quality, ultra detailed, 8k resolution‌主体特征&#xff1a;(1girl:1.3), long …