问题描述: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.
其实就是给定一个数组,没有按顺序排列,找到三个数的和等于0,且这三个数的不重复。也就是没有顺序差异。
PS:并不是不能[-1, -1, 2],而是[-1, -1, 2]是和[2, -1, -1]只能出现一次。
class Solution { public: vector<vector<int>> threeSum(vector<int>& nums) { sort(nums.begin(), nums.end()); vector<vector<int>> result; int len = nums.size(); for (int current = 0; current < len - 2&&nums[current]<=0;current++) { int front = current + 1, back = len - 1; while (front < back) { if (nums[current] + nums[front] + nums[back] < 0) front++; else if (nums[current] + nums[front] + nums[back] > 0) back--; else { vector<int> v; v.push_back(nums[current]); v.push_back(nums[front]); v.push_back(nums[back]); result.push_back(v); v.clear(); do { front++; } while (front < back&&nums[front - 1] == nums[front]); do { back--; } while (front < back&&nums[back + 1] == nums[back]); } } while (current < len - 2 && nums[current + 1] == nums[current]) current++; } return result; } };O(∩_∩)O哈哈~