问题描述
Given an array S of n integers, are there elements a , b , c in S such that a + b + c = 0?
Note:
- Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c)
- The solution set must not contain duplicate triplets.
For example, given array S = {-1 0 1 2 -1 -4},
A solution set is:
(-1, 0, 1)
(-1, -1, 2)
这题的意思是,在给出的整数数组中,找出三个元素的和为0的集合,集合中的元素是升序排列,同时集合中不能包含重复的解。
解法
前面我们解过一个Two Sum的问题,这里虽说是三个数了,但是乍一看会让人去思考:是不是可以用和Two Sum问题相似的解法?我想可以尝试一下,大概思路即:在数组中取一个元素,求它的反,然后在剩下的元素中找到两个数,它们的和正好和前面求得的反相等。值得注意的地方:
- 这一题最终不是求元素的索引。
- 这一题不用考虑是否有多个相同的元素,因为最终的集合不包含重复的解。
|
|