Leetcode: 15. 3 Sum 三数之和
发布日期:2021-09-14 15:33:01
浏览次数:16
分类:技术文章
本文共 792 字,大约阅读时间需要 2 分钟。
3 Sum 三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
输入:
nums = [-1, 0, 1, 2, -1, -4],
输出:
[ [-1, 0, 1], [-1, -1, 2]]
方法一:双指针法
如果我们随机确定了一个数a,问题就变成了,在剩下的数里面找到2个数和为0-a,和2SUM问题一样了?(还需要排除重复答案)。 思路: 首先确保数组有序。 用指针i确定一个数a。用j和p两个指针分别从两端到中央扫描,如果指针所指的值之和与0-a相比较小,那就需要j右移,反之p左移。 时间复杂度O(N2):其中固定指针i循环复杂度 O(N),双指针 j, p 复杂度 O(N)。排序时间复杂度O(NlogN)。vector> threeSum(vector & nums) { if (nums.size()<3) return { }; vector > res; sort(nums.begin(),nums.end()); //首先确保数组有序 for(int i=0;i<=nums.size()-3;i++) { if (nums[i]>0) break; if (i > 0 && nums[i] == nums[i - 1]) continue; int j=i+1,p=nums.size()-1; while(j
转载地址:https://blog.csdn.net/weixin_42490152/article/details/100975576 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月02日 12时58分53秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Unity编辑器扩展——标签属性Attribute
2021-06-30
Unity中实现拖拽操作
2021-06-30
Unity中的UGUI事件系统
2021-06-30
C#中的常量
2021-06-30
C#中的静态变量与非静态变量
2021-06-30
C#中的ref、out、params关键字
2021-06-30
C#中的多态性
2021-06-30
C#中的命名空间
2021-06-30
设计模式——状态模式
2021-06-30
设计模式——工厂模式
2021-06-30
Unity中实现有限状态机FSM
2021-06-30
Unity中实现反弹
2021-06-30
U3D游戏开发框架(九)——事件序列
2021-06-30
Unity中解决“SetDestination“ can only be called on an active agent that has been placed on a NavMesh
2021-06-30
Unity中的刚体
2021-06-30
Unity中的坐标转换
2021-06-30
Unity中为什么不能对transform.position.x直接赋值?
2021-06-30
Unity中物体移动方法详解
2021-06-30
使用对象池优化性能
2021-06-30