这类题的思路:可以3Sum=0,3Sum=target,3Sum≈target展开,Leecode上的两题由此解。
Given an integer array nums, return all the triplets [nums[i], nums[j], nums[k]] such that i != j, i != k, and j != k, and nums[i] + nums[j] + nums[k] == 0.
Notice that the solution set must not contain duplicate triplets.
Example 1:
Input: nums = [-1,0,1,2,-1,-4]
Output: [[-1,-1,2],[-1,0,1]]
Example 2:
Input: nums = []
Output: []
Example 3:
Input: nums = [0]
Output: []
Constraints:
0 <= nums.length <= 3000
-105 <= nums[i] <= 105
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> ans;
int i, j, lo, hi, n=nums.size(), sum;
sort(nums.begin(), nums.end());
for(i=0; i<n-1; i++) {
//此处切忌不能写成 i >= 0 && nums[i] != nums[i-1]
//运算符‘&&’优先级高于‘||’优先级
if(i == 0 || i > 0 && nums[i] !=