三数之和
题目
Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Note:
The solution set must not contain duplicate triplets.
Example:
Given array nums = [-1, 0, 1, 2, -1, -4],
A solution set is:
[
[-1, 0, 1],
[-1, -1, 2]
]
解析重点
1.我们需要知道当移动数组时,三数的和改变的情况。那么,先对数组进行排序,这样移动数组时,我们知道和是变大还是变小。
2.固定一个数a之后,那么就变成了两数之和。这时,我们怎么移动b和c呢。b从左边开始移动,c从右边开始移动,当b+c>0-a时,我们需要减小值,那么移动c,反之,
移动b,直到b、c相交。
java代码
1 | class Solution { |