四数之和-力扣

ops/2024/10/21 6:21:26/

本题在三数之和的基础上,再增加一重循环进行解答

  • 首先注意的点是,一级剪枝处理,target > 0 && nums[i] >= target 此处只有整数才可剪枝处理,如果target为负数,nums[i] < target,也不能代表后续无解,因为数组排序后是一个升序的数组。
  • 二级去重,和一级去重类似,当当前元素与前一个相同时,则跳过
  • 二级剪枝处理,个人认为在一定情况下,似乎无需进行
  • 测试用例中有些数据的和,会超出int类型的范围,尝试在二级剪枝进行处理,但未能成功,只能选择在四数之和处使用long类型。

代码如下:

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

http://www.ppmy.cn/ops/45275.html

相关文章

redis服务监控:redis_exporter安装与使用

redis监控 使用redis exporter&#xff0c;提供redis最重要的运行指标数据收集&#xff0c;部署了redis exporter以后&#xff0c;prometheus会通过redis exporter暴露的端口拉取数据。 redis exporter下载地址&#xff1a; https://github.com/oliver006/redis_exporter/tag…

解决Error: error:0308010C:digital envelope routines::unsupported的四种解决方案

问题描述&#xff1a; 报错&#xff1a;Error: error:0308010C:digital envelope routines::unsupported 报错原因&#xff1a; 主要是因为 nodeJs V17 版本发布了 OpenSSL3.0 对算法和秘钥大小增加了更为严格的限制&#xff0c;nodeJs v17 之前版本没影响&am…

【CSharp】判断目录以及文件是否存在

【CSharp】判断目录以及文件是否存在 1.背景2.判断目录3.判断文件1.背景 我们在进行磁盘IO的时候进行需要判断目录、文件是否存在,根据判断结果再做进一步的操作。 其中判断目录是否存在,涉及Directory.Exists(String) 方法; 命名空间:System.IO 方法功能:确定给定路径是…

面试 Java 框架八股文十问十答第七期

面试 Java 框架八股文十问十答第七期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;Spring 一共有几种注入…

Ai速递5.29

全球AI新闻速递 1.摩尔线程与无问芯穹合作&#xff0c;实现国产 GPU 端到端 AI 大模型实训。 2.宝马工厂&#xff1a;机器狗上岗&#xff0c;可“嗅探”故障隐患。 3.ChatGPT&#xff1a;macOS 开始公测。 4.Stability AI&#xff1a;推出Stable Assistant&#xff0c;可用S…

源码编译安装LAMP

LAMP 网站服务架构 同时提供静态页面和动态页面能力 Linux 提供网站服务应用的运行环境&#xff0c;也支持Windows作为 AMP 的运行环境 Apache 作为前端网站服务&#xff0c;直接面向用户提供网站访问入口&#xff0c;并处理静态页面请求 MySQL 作为后端数据库&…

vulhub——Aria2、bash、catic

文章目录 一、Aria2 任意文件写入漏洞二、CVE-2014-6271&#xff08;Bash Shell 漏洞&#xff09;三、CVE-2022-46169&#xff08;Cacti 前台命令注入漏洞&#xff09; 一、Aria2 任意文件写入漏洞 Aria2是一个命令行下轻量级、多协议、多来源的下载工具&#xff08;支持 HTTP…

基于vuestic-ui实战教程 - 页面篇

1. 简介 前面介绍了基本的内容比如如何获取动态数据&#xff0c;下面就到登录进来后的页面实现了&#xff0c;相信各位读者或多或少都有 element-uijs 的实战经历&#xff0c;那么 vuestic-uits 实现的页面又该如何写呢&#xff1f;带着疑问开启今天的学习&#xff08;声明由于…