【力扣】15.三数之和

ops/2025/2/2 16:14:56/

AC截图

题目

思路

这道题如果简单的用暴力三重遍历去做,会超时。所以我们思考假如有三个下标,i,l,r

其中i=0(初始),l=i+1 r=nums.size()-1

我们固定nums[i]的值,那么就转换为两数之和,我们需要找到nums[l]+nums[r]==-nums[i]

假如我们对数组排序,那么记target=-nums[i],sum=nums[l]+sum[r]

①如果sum==target,即为所求,l++,r--

②如果sum<target,为了得到更大的sum,只能l++

③如果sum>target,为了减小sum,只能r--

接下来,就是一些剪枝操作。比如数组中存在重复的数字,就需要跳过。

①假如已经有sum==target并且进行了l++,r--

此时如果存在与sum[l]或者sum[r]相同的值,必然得到的是相同的数组,就需要使用l++或者r--跳过

②如果出现了num[i]值重复,由于上一个循环已经得到了所有的序列,此时也应给使用continue跳过

代码

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> res;sort(nums.begin(),nums.end());for(int i=0;i<nums.size();i++){if(i>0 && nums[i]==nums[i-1]) continue;int l=i+1;int r=nums.size()-1;int target = -nums[i];while(l<r){int sum = nums[l]+nums[r];if(sum==target){res.push_back({nums[i],nums[l],nums[r]});l++;r--;while(l<r && nums[l]==nums[l-1]){l++;}while(l<r && nums[r]==nums[r+1]){r--;}}else if(sum>target){r--;}else{l++;}}}return res;}
};


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

相关文章

自定义数据集使用框架的线性回归方法对其进行拟合

代码 import torch import numpy as np import torch.nn as nncriterion nn.MSELoss()data np.array([[-0.5, 7.7],[1.8, 98.5],[0.9, 57.8],[0.4, 39.2],[-1.4, -15.7],[-1.4, -37.3],[-1.8, -49.1],[1.5, 75.6],[0.4, 34.0],[0.8, 62.3]])x_data data[:, 0] y_data data…

边缘计算与ROS结合:如何实现分布式机器人智能决策?

前言 在现代机器人系统中&#xff0c;分布式决策能力正成为实现群体协作任务的关键需求。传统集中式架构存在决策延迟、通信瓶颈以及容错性低等问题&#xff0c;而边缘计算结合 ROS&#xff08;Robot Operating System&#xff09;为分布式机器人智能决策提供了全新的解决方案…

【ArcGIS_Python】使用arcpy脚本将shape数据转换为三维白膜数据

说明&#xff1a; 该专栏之前的文章中python脚本使用的是ArcMap10.6自带的arcpy&#xff08;好几年前的文章&#xff09;&#xff0c;从本篇开始使用的是ArcGIS Pro 3.3版本自带的arcpy&#xff0c;需要注意不同版本对应的arcpy函数是存在差异的 数据准备&#xff1a;准备一个…

实现网站内容快速被搜索引擎收录的方法

本文转自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/6.html 实现网站内容快速被搜索引擎收录&#xff0c;是网站运营和推广的重要目标之一。以下是一些有效的方法&#xff0c;可以帮助网站内容更快地被搜索引擎发现和收录&#xff1a; 一、确…

跨境支付领域中常用的英文单词(持续更新)

### **1. 支付方式 (Payment Methods)** 1. Credit Card 2. Debit Card 3. Bank Transfer 4. Wire Transfer 5. PayPal 6. Alipay 7. WeChat Pay 8. Apple Pay 9. Google Pay 10. Cryptocurrency 11. Digital Wallet 12. Mobile Payment 13. Cash on D…

12.udp

12.udp **1. UDP特性****2. UDP编程框架&#xff08;C/S模式&#xff09;****3. UDP发送接收函数****4. UDP编程练习** 1. UDP特性 连接特性&#xff1a;无链接&#xff0c;通信前无需像TCP那样建立连接。可靠性&#xff1a;不可靠&#xff0c;不保证数据按序到达、不保证数据…

Oracle Primavera P6 最新版 v24.12 更新 2/2

目录 一. 引言 二. P6 EPPM 更新内容 1. 用户管理改进 2. 更轻松地标准化用户设置 3. 摘要栏标签汇总数据字段 4. 将里程碑和剩余最早开始日期拖到甘特图上 5. 轻松访问审计数据 6. 粘贴数据时排除安全代码 7. 改进了状态更新卡片视图中的筛选功能 8. 直接从活动电子…

独立游戏RPG回顾:高成本

刚看了某纪录片&#xff0c; 内容是rpg项目的回顾。也是这个以钱为核心话题的系列的最后一集。 对这期特别有代入感&#xff0c;因为主角是曾经的同事&#xff0c;曾经在某天晚上听过其项目组的争论。 对其这些年的起伏特别的能体会。 主角是制作人&#xff0c;在访谈中透露这…