三数之和 有大学问

    科技2022-09-11  146

    class Solution { public: vector<vector<int>> threeSum(vector<int>& nums) { int n = nums.size(); if (n < 3) { return {}; } unordered_set<int> us; vector<vector<int>> ans; sort(nums.begin(), nums.end()); for (int i = 0; i < nums.size() - 2; i++) { while (i > 0 && i < nums.size() && nums[i] == nums[i-1]) { i++; } int l = i + 1; int r = nums.size() - 1; while (l < r) { int result = nums[l] + nums[r] + nums[i]; if (result == 0) { ans.push_back({nums[l], nums[r], nums[i]}); while (l < r && nums[r] == nums[r-1]) { r--; } r--; while (l < r && nums[l] == nums[l+1]) { l++; } l++; } else if (result > 0) { r--; } else { l ++; } } } return ans; } };
    Processed: 0.009, SQL: 9