博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode OJ 3Sum 3个整数之和
阅读量:4565 次
发布时间:2019-06-08

本文共 948 字,大约阅读时间需要 3 分钟。

 

题意:给一个vector<int>容器,要求每当找到3个元素之和为0时就将这3个数按大小顺序记下来,用一个二维vector返回。也就是vector< vector<int> >类型的。

思路:2sum是用的两个指针,那么3sum就可以利用2sum的思路解决,假如先挑一个元素出来,则还需挑2个元素,就可以用2sum的思路了。首先将n个元素排序先。怎么挑第1个元素?一共有n种选择,但是为了防止重复,后2个不用挑,留给两个指针来解决,也就是有n-2个元素。而两个指针的可以挑的有哪些呢?假设第1个元素是第i个,那么这两个指针应该在第i个之后的元素挑,为什么呢?

比如数组为:-2 -1 0 1 2

第一轮循环:

  第一个元素:-2 

  第二个元素:0

  第三个元素:2

第2轮循环应该是:

  第一个元素:-1

  第二个元素:0  (难道还想试试-2? -2可以搭配的所有可能都已经试出来了,这里不用再重试了)

  第三个元素:1

 

 

 

 

1 class Solution { 2 public: 3     vector
> threeSum(vector
&num) { 4 sort(num.begin(), num.end()); //排序 5 vector
group(3,1); 6 vector< vector
> ans; 7 int n=num.size(),sum,sum2,*pl,*pr,old=10086; 8 for(int i=0; i
sum2 ) pr--;30 else pl++;31 }32 }33 return ans;34 }35 };
3Sum

 

转载于:https://www.cnblogs.com/xcw0754/p/4385687.html

你可能感兴趣的文章
UVALive 3635 Pie(二分法)
查看>>
win系统查看自己电脑IP
查看>>
Backup&recovery备份和还原 mysql
查看>>
全局变量、局部变量、静态全局变量、静态局部变量的区别
查看>>
一道面试题及扩展
查看>>
Unity 3D 我来了
查看>>
setup elk with docker-compose
查看>>
C++ GUI Qt4学习笔记03
查看>>
Java基础回顾 —反射机制
查看>>
c# 前台js 调用后台代码
查看>>
2017-02-20 可编辑div中如何在光标位置添加内容
查看>>
$.ajax()方法详解
查看>>
day42
查看>>
jquery操作select(增加,删除,清空)
查看>>
Sublimetext3安装Emmet插件步骤
查看>>
MySQL配置参数
查看>>
全面理解Java内存模型
查看>>
A - Mike and palindrome
查看>>
DOTween教程
查看>>
java web中java和python混合使用
查看>>