๋์ด๋: Easy
ํค์๋: Stack
๋ฌธ์
์ ์ ๋ฐฐ์ด nums์ ์ ์ target์ด ์ฃผ์ด์ก์ ๋, ๋ ์ซ์์ ํฉ์ด target์ด ๋๋๋กํ๋ ์ซ์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํฉ๋๋ค.
๊ฐ ์
๋ ฅ์๋ ์ ํํ ํ๋์ ํด๊ฒฐ์ฑ
์ด ์๋ค๊ณ ๊ฐ์ ํ ์ ์์ผ๋ฉฐ, ๋์ผํ ์์๋ฅผ ๋ ๋ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ค ์์๋ก๋ ๋ต์ ๋ฐํํ ์ ์์ต๋๋ค.
๋ฌธ์ ์๋ฌธ: https://leetcode.com/problems/two-sum/description/
Example 1:
Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
๋ฌธ์ ํ์ด
O(n) ์๊ฐ ์์ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด์, array์ iteration์ ๋๋ ๋์ ๋ต์ ํด๋นํ๋ ๊ฐ์ ์กฐํํ ์ ์๋๋ก ํ ์ ์๋ค.
์ด๋ฅผ ์ํด์ Hash Table์ ์ฌ์ฉํ ์ ์๋ค. ํ์ฌ ๊ฐ๊ณผ์ ํฉ์ด target์ด ๋๋ ๊ฐ์ ์ฐพ๋ ๊ฒ์ด ๋ชฉํ์ด๊ธฐ ๋๋ฌธ์ key ๊ฐ์ array ๊ฐ์ผ๋ก ํ๊ณ , ํ์ฌ ๊ฐ์ ๋์๋๋ key ๊ฐ์ด hash ์ ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ํตํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
#include <unordered_map>
#include <vector>
using namespace std;
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
// key (int), value (int)
unordered_map<int, int> hash;
vector<int> ans;
for(auto i=0; i < nums.size(); ++i){
const auto ptr = hash.find(target - nums[i]);
if(ptr != hash.end()){
ans.emplace_back(i);
ans.emplace_back(ptr -> second);
return ans;
}
hash.insert({nums[i], i});
}
return ans;
}
};
'IN DEPTH CAKE > Supercoder' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[c++/LeetCode-Hash Table] 692. Top K Frequent Words (1) | 2024.05.05 |
---|---|
[c++/LeetCode-Hash Table] 387. First Unique Character in a String (1) | 2024.05.05 |
[c++/LeetCode-Stack] 394. Decode String (1) | 2024.05.05 |
[c++/LeetCode-Stack] 1047. Remove All Adjacent Duplicates In String (1) | 2024.05.05 |
[c++/LeetCode-Stack] 155. MinStack (1) | 2024.05.05 |