leetcode上的原题美图的笔试题目。
本質上这个问题是2数之和的问题扩展:
在给定的数组中找出两个数a,b使得a+b=sum。
三个数之和为0即a+b+c=0,可以转化为a+b=-c这需要保证-c在数组中。下面代碼采用了两个循环第一个循环代表初始值,即先是第一个值a[0]不变计算a[0]+a[1]+a[n-1],若大于0则k减1计算a[0]+a[1]+a[n-2],若小于0则j加1,计算a[0]+a[2]+a[n-1]...如果存在多个重复值这鈳能会加入重复的数对,不过使用容器set可以解决该问题相同的数对不会出现在set中。
可以不使用容器set去重复循环时跳过重复相同的数。
發布了28 篇原创文章 · 获赞 15 · 访问量 3万+