Submission #27
Submitted by test
Problem 3SUM
Language cpp
Time 1.0
Memory 0.0
Submitted Code
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

vector<vector<int>> threeSum(vector<int>& nums) {
    vector<vector<int>> result;
    sort(nums.begin(), nums.end());

    int n = nums.size();
    for (int i = 0; i < n - 2; i++) {
        // Skip duplicate values for the first number
        if (i > 0 && nums[i] == nums[i - 1]) continue;

        int target = -nums[i];
        int left = i + 1, right = n - 1;

        while (left < right) {
            int sum = nums[left] + nums[right];
            if (sum == target) {
                result.push_back({nums[i], nums[left], nums[right]});

                // Skip duplicates for left and right
                while (left < right && nums[left] == nums[left + 1]) left++;
                while (left < right && nums[right] == nums[right - 1]) right--;

                left++;
                right--;
            } else if (sum < target) {
                left++;
            } else {
                right--;
            }
        }
    }
    return result;
}

int main() {
    vector<int> nums = {-1, 0, 1, 2, -1, -4};
    vector<vector<int>> res = threeSum(nums);

    cout << "[";
    for (int i = 0; i < res.size(); ++i) {
        cout << "[";
        for (int j = 0; j < 3; ++j) {
            cout << res[i][j];
            if (j < 2) cout << ", ";
        }
        cout << "]";
        if (i < res.size() - 1) cout << ", ";
    }
    cout << "]" << endl;

    return 0;
}