https://leetcode.com/problems/3sum/description/
정수 배열이 주어질 때, 세 수의 합이 0 이 되는 수를 찾아라.

우선 정렬이 필요하다.
다음으로 첫수를 정하고,
그 뒤로는 두 수의 합을 구하는 로직과 같다.
다만, 중복이 없어야 하므로, 이는 여러 방법을 사용할 수 있겠다.
코드
더보기
vector<vector<int>> threeSum(vector<int>& nums)
{
sort(nums.begin(), nums.end());
vector<vector<int>> vRet;
set<string> vBuff;
for (int q = 0; q < nums.size() - 2; ++q)
{
int num0 = nums[q];
int left = q + 1;
int right = nums.size() - 1;
int target = -num0;
while (left < right)
{
int sum = nums[left] + nums[right];
if (sum == target)
{
string temp = to_string(num0) + "_" + to_string(nums[left]) + "_" + to_string(nums[right]);
if (vBuff.find(temp) == vBuff.end())
{
vRet.push_back(vector<int>{ num0, nums[left], nums[right] });
vBuff.insert(temp);
}
++left; --right;
}
else if (sum < target)
++left;
else if (sum > target)
--right;
}
}
return vRet;
}
결과

'Leetcode > NeetCode' 카테고리의 다른 글
[SlidingWindow][Easy] 121. Best Time to Buy and Sell Stock (0) | 2024.07.09 |
---|---|
[TwoPointers][Medium] 11. Container With Most Water (0) | 2024.07.09 |
[TwoPointers][Medium] 167. Two Sum II - Input Array Is Sorted (0) | 2024.07.09 |
[TwoPointers][Easy] 125. Valid Palindrome (0) | 2024.07.08 |
[ArraysHasing][Medium] 128. Longest Consecutive Sequence (0) | 2024.07.08 |