标签:
1 class Solution { 2 public: 3 vector<vector<int>> threeSum(vector<int>& nums) { // o(n^3), 超时 4 vector<vector<int>> vec; 5 vector<int> temp; 6 for (int i = 0; i < nums.size(); ++ i) { 7 temp.push_back(nums[i]); 8 for (int j = i + 1; j < nums.size(); ++ j) { 9 temp.push_back(nums[j]); 10 for (int k = j + 1; k < nums.size(); ++ k) { 11 if (temp[0] + temp[1] + nums[k] == 0) { 12 temp.push_back(nums[k]); 13 vector<int> tmp = temp; 14 sort(tmp.begin(), tmp.end()); 15 if(find(vec.begin(), vec.end(), tmp) == vec.end()) vec.push_back(tmp); 16 temp.pop_back(); 17 } 18 } 19 temp.pop_back(); 20 } 21 temp.pop_back(); 22 } 23 return vec; 24 } 25 };
1 class Solution { 2 public: 3 vector<vector<int>> threeSum(vector<int>& nums) { 4 vector<vector<int>> vec; 5 if (nums.size() < 3) return vec; 6 sort(nums.begin(), nums.end()); 7 for(auto i = nums.begin(); i < nums.end() - 2; ++ i) { 8 auto j = i + 1; 9 if (i > nums.begin() && *i == *(i - 1)) continue; // 防止重复出现 10 else { 11 auto k = nums.end() - 1; 12 while (j < k) { 13 if (*i + *j + *k < 0) { 14 ++ j; 15 while (j < k && *j == *(j - 1)) ++ j; // 防止重复 16 } 17 else if (*i + *j + *k > 0) { 18 -- k; 19 while (j < k && *k == *(k + 1)) -- k; // 防止重复 20 } 21 else { 22 vec.push_back(vector<int>{*i, *j, *k}); 23 ++ j; -- k; 24 while (j < k && *j == *(j - 1) && *k == *(k + 1)) { // 防止重复 25 ++ j; -- k; 26 } 27 } 28 } 29 } 30 } 31 return vec; 32 } 33 };
标签:
原文地址:http://www.cnblogs.com/shadowwalker9/p/5755284.html