[LeetCode, 리트코드] Two Sum
- 카테고리 없음
- 2018. 11. 17. 02:53
반응형
1. Problem
주어진 정수 배열에서, 서로 더한 값이 특정 수가 되는 두 숫자의 인덱스들을 반환해라.
입력에는 정확히 하나의 해결책만이 존재한다고 가정한다. 또한 한 요소를 두 번이상 사용하면 안된다.
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
2. Solution
해쉬를 사용하는 것이 이번 문제의 핵심 키 포인트. 먼저 target의 보수를 구한 후 그 수가 hash에 있는지 찾는다. 없으면 현재 인덱스가 가리키는 값을 해쉬에 넣고 키는 값, 값은 인덱스로 한다. 그리고 해쉬에 보수 정보가 존재하면 현재 인덱스와 그 보수의 인덱스를 반환한다.
3. What I solved
class Solution { public: unordered_map<int, int> hash; vector<int> twoSum(vector<int>& nums, int target) { vector<int> ret; for(int i=0; i < nums.size(); ++i){ int complement = target - nums[i]; if(hash.find(complement) != hash.end()){ ret.push_back(i); ret.push_back(hash[complement]); break; } hash[nums[i]] = i; } return ret; } };
4. Best solution
위와 동일
반응형
이 글을 공유하기