leetcode 三数之和_leetcode数组交集

leetcode 三数之和_leetcode数组交集原题链接给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[] 提示:0 <= nums.length <= 300


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原题链接
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

示例 1:

输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
示例 2:

输入:nums = []
输出:[]
示例 3:

输入:nums = [0]
输出:[]
 

提示:

0 <= nums.length <= 3000
-105 <= nums[i] <= 105

题解
固定a,则 b + c == -a,由此可以想到先排序,然后利用双指针,时间复杂度O(n2)

class Solution { 
   
public:
    vector<vector<int>> threeSum(vector<int>& nums) { 
   
        sort(nums.begin(),nums.end());
        for(int i = 0;i < nums.size();i ++)cout<<nums[i]<<" ";
        vector<vector<int> >res;
        for(int i = 0;i < nums.size();i ++){ 
   
            if(i >= 1 && nums[i] == nums[i - 1])continue;
            int tar = -nums[i];
            for(int j = i + 1,r = nums.size() - 1;j < r;j ++){ 
   
                if(j > i + 1 && nums[j] == nums[j - 1])continue;
                while(r - 1 > j && nums[j] + nums[r - 1] >= tar)r --;
                if(nums[j] + nums[r] == tar)res.push_back({ 
   nums[i],nums[j],nums[r]});
            }
        }
        return res;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168728.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Xenu-死链接检测工具「建议收藏」

    Xenu-死链接检测工具「建议收藏」Xenu是一款深受业界好评,并被广泛使用的死链接检测工具。时常检测网站并排除死链接,对网站的 SEO 非常重要,因为大量死链接存在会降低用户和搜索引擎对网站的信任。我们推荐的死链接检测工具Xenu主要具有以下特征:需要下载安装,不到1M大小,用户界面非常简洁,操作简单。检测彻底:能够检测到图片、框架、插件、背景、样式表、脚本和java程序中的链接。报告形式合理多样

    2022年7月23日
  • pycharm 2022.01.13激活码_最新在线免费激活2022.02.24

    (pycharm 2022.01.13激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html2KLKA7BQFO-eyJsaWNlbnNlSWQi…

    2022年4月1日
  • Springboot+Seata整合以及事务模式分析

    Springboot+Seata整合以及事务模式分析分布式事务一、分布式事务的组成部分事务参与者:对应的一个一个的微服务资源服务器:对应一个个微服务的数据库事务管理器:决策各个事务参与者的提交和回滚两阶段提交:准备阶段:向事务管理器向事务参与者发送预备请求,事务参与者在写本地的redo和undo日志,但是不提交,并且返回准备就绪的信息,最后提交的动作交给第二阶段来进行提交阶段:如果事务协调者收到失败或者超时的信息,直接给每个参与者发送回滚消息;否则提交消息,最后根据协调者的指令释放所有事务处理过程中使用的资源锁二、项目例子当前依赖,

    2022年9月19日
  • vue遍历渲染数组「建议收藏」

    vue遍历渲染数组「建议收藏」<divv-for=”iteminuserAllInfo.adevarUserSkills”:key=”item.id”>{{item}}</div>v-for=”单个数据in数组”:key=“单个数据.主键”(主键唯一)不是对象无需主键

    2022年10月7日
  • curl 命令详解

    curl 命令详解转载于:https://www.cnblogs.com/guixiaoming/p/8507268.htmlcurl是一种命令行工具,作用是发出网络请求,然后获取数据,显示在"标准输出

    2022年6月30日
  • 吞食鱼2(FeedingFrenzyTwo) 修改器[通俗易懂]

    吞食鱼2(FeedingFrenzyTwo) 修改器[通俗易懂]童年回忆系列。小时候特别喜欢玩这类游戏,软件不大,很慢的网速也不会下载太久,然后对配置要求不高,很破的电脑也可以玩得很开心。不过也有糟心的时候啊,大鱼太多,无数次死于挑战咬梭子鱼的尾巴……今年最后一天

    2022年7月1日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号