LeetCode刷题(C++)——3Sum(Medium)

来源:互联网 发布:华西期货软件下载 编辑:程序博客网 时间:2024/05/23 14:32

Given an array S of n integers, are there elements abc in S 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.

For example, given array S = [-1, 0, 1, 2, -1, -4],A solution set is:[  [-1, 0, 1],  [-1, -1, 2]]

class Solution {public:    vector<vector<int>> threeSum(vector<int>& nums) {        vector<vector<int>> result;if (nums.empty())return result;sort(nums.begin(), nums.end());for (int start = 0;start < nums.size();start++){int i = start + 1;int j = nums.size() - 1;while (i < j){if (nums[i] + nums[j] == -nums[start]){vector<int> temp;temp.push_back(nums[start]);temp.push_back(nums[i]);temp.push_back(nums[j]);result.push_back(temp);while (i + 1 < nums.size() && nums[i] == nums[i + 1])i++;while (j - 1 >= 0 && nums[j] == nums[j - 1])j--;i++;j--;}else if (nums[i] + nums[j] < -nums[start])i++;else j--;}while (start + 1 < nums.size() && nums[start] == nums[start + 1])start++;}return result;    }};


0 0
原创粉丝点击