두 수의 합을 찾는 문제이니까 target의 값에서 임의의 요소를 뻴셈하여 뺄셈 한 결과가 map에 있는지 확인하는 방법으로 풀이
음 시간복잡도는 배열의 크기 만큼 반복 하니까 O(n) + O(n) = O(n)
classSolution {public:
vector<int> twoSum(vector<int>& nums, int target){
vector<int> arr;
unordered_map<int, int> m;
constint size = nums.size();
// vector 의 값을 키, 배열의 인덱스를 값으로for (int i = 0; i < size; i++) {
m[nums[i]] = i;
}
for (int i = 0; i < size; i++) {
int cand = target - nums[i];
if (m.count(cand)) {
int d = m[cand];
if (i == d) {
// 같은 index 는 올수 없음continue;
}
arr.push_back(min(i, d));
arr.push_back(max(i, d));
break;
}
}
return arr;
}
};