【LeetCode 15】15.三数之和

简介: 【LeetCode 15】15.三数之和

一、题意

二、思考过程

哈希解法

使用两层for循环就可以确定 a 和b 的数值,哈希法来确定 0-(a+b) 是否在 数组里出现过。

//找出a+b+c=0

//a=nums[i],b=nums[j],c=-(a+b)

三、完整代码

class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        vector<vector<int>> result;//定义result二维向量
        sort(nums.begin(),nums.end());//vector进行排序
        //找出a+b+c=0
        //a=nums[i],b=nums[j],c=-(a+b)
        for(int i=0;i<nums.size();i++){
            //排序之后如果第一个元素已经大于0,那么不可能凑成三元组
            if(nums[i]>0){
                continue;
            }
            if(i>0&&nums[i]==nums[i-1]){//去重操作
                continue;
            }
            unordered_set<int> set;
            for(int j=i+1;j<nums.size();j++){
                //三元组元素b去重
                if(j>i+2&&nums[j]==nums[j-1]&&nums[j-1]==nums[j-2]){
                    continue;
                }
                int c=0-(nums[i]+nums[j]);
                if(set.find(c)!=set.end()){
                    result.push_back({nums[i],nums[j],c});
                    set.erase(c);//三元组元素c去重
                }else{
                    set.insert(nums[j]);
                }
            }
        }
        return result;
    }
};
}
    return result;
}

};


目录
相关文章
|
canal 缓存 NoSQL
【Redis系列笔记】双写一致性
本文讨论了缓存不一致问题及其后果,如价格显示错误和订单计算错误。问题主要源于并发和双写操作的异常。解决方案包括使用分布式锁(但可能导致性能下降和复杂性增加)、延迟双删策略(通过延迟删除缓存来等待数据同步)以及异步同步方法,如通过Canal和MQ实现数据的最终一致性。面试中,可以提及这些策略来确保数据库和缓存数据的一致性。
1290 1
【Redis系列笔记】双写一致性
|
NoSQL Java Redis
介绍Redis的各种用途以及使用场景
介绍Redis的各种用途以及使用场景 Redis 一、为什么使用 解决应用服务器的cpu和内存压力 减少io的读操作,减轻io的压力 关系型数据库的扩展性不强,难以改变表结构 二、优点: nosql数据库没有关联关系,数据结构简单,拓展表比较容易 nosql读取速度快,对较大数据.
12081 1
|
12月前
|
监控 前端开发 Java
Java SpringBoot –性能分析与调优
Java SpringBoot –性能分析与调优
|
11月前
|
设计模式 Java 程序员
【23种设计模式·全精解析 | 概述篇】设计模式概述、UML图、软件设计原则
本系列文章聚焦于面向对象软件设计中的设计模式,旨在帮助开发人员掌握23种经典设计模式及其应用。内容分为三大部分:第一部分介绍设计模式的概念、UML图和软件设计原则;第二部分详细讲解创建型、结构型和行为型模式,并配以代码示例;第三部分通过自定义Spring的IOC功能综合案例,展示如何将常用设计模式应用于实际项目中。通过学习这些内容,读者可以提升编程能力,提高代码的可维护性和复用性。
2122 1
【23种设计模式·全精解析 | 概述篇】设计模式概述、UML图、软件设计原则
|
存储 负载均衡 NoSQL
Tomcat 9.X(9.0.74)集群实现Session共享(基于redisson)
本文主要介绍了tomcat集群环境下基于redis+Redisson实现session共享,分享给大家,供广大从业者学习和参考。
13027 4
|
设计模式 前端开发 JavaScript
[干货满满] 三年经验前端的面试经验分享
[干货满满] 三年经验前端的面试经验分享
817 1
|
JSON 负载均衡 Java
SpringCloud Feign 远程调用(史上最详细讲解)
SpringCloud Feign 远程调用(史上最详细讲解)
14308 0
SpringCloud Feign 远程调用(史上最详细讲解)
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的完美结合
【10月更文挑战第21天】本文将引导你走进Node.js和Express框架的世界,探索它们如何共同打造一个高效、可扩展的后端服务。通过深入浅出的解释和实际代码示例,我们将一起理解这一组合的魅力所在,并学习如何利用它们来构建现代Web应用。
364 1
|
机器学习/深度学习 自然语言处理 vr&ar
ICML 2024:复杂组合3D场景生成,LLMs对话式3D可控生成编辑框架来了
【8月更文挑战第24天】近年来,3D内容生成技术为虚拟现实和游戏领域带来革新,但仍面临处理复杂场景和多对象交互的挑战。为此,研究者提出了Layout-guided Gaussian Splatting (LGS)框架,结合大型语言模型(LLMs)和扩散模型,实现高质量3D场景生成。LGS通过LLMs提取文本描述中的实例关系并转化为布局,再使用扩散模型和自适应几何控制技术优化3D高斯表示,生成更准确、细腻的场景。实验表明,LGS在复杂场景生成方面表现优异,但计算成本和训练时间较长,且主要针对静态场景。论文详情参见:https://arxiv.org/pdf/2402.07207
363 3
下一篇
开通oss服务