반응형
문제 링크 : leetcode.com/problems/two-sum/
리트코드를 처음 들어간 기념으로 문제를 보자마자 생각나는대로 풀어보았는데
시간복잡도가 거슬려서 조금 더 효율 좋은 방법을 찾아보았다.
1. 브루트 포스 방식 - O(N^2)
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> ans; //return할 answer 벡터 생성
bool br = false; //이중 for문을 벗어나기 위해 break 변수
for(int i=0; i<nums.size(); i++){
for(int j=i+1; j<nums.size(); j++){
if((nums[i] + nums[j]) == target){ //만약 nums 배열의 i번째 수 + j번째 수가 target과 같다면
ans.push_back(i);
ans.push_back(j); //ans배열에 i, j를 넣고 for문을 멈춘다.
br = true;
break;
}
}
if(br) break;
}
return ans;
}
};
2. 해쉬 맵
직접 코드를 짜진 않았으므로 pseudo code로 대체한다.
unordered_map<int, int> hash;
를 선언하고
for문 안에서
int tmp = target - nums[i]
if(hash.find(tmp) != hash.end()){
ans.push_back(i);
ans.push_back(hash[tmp]);
break;
}
else{ hash[nums[i]] = i; }
return ans;와 같이 풀어주면 된다.
반응형
'Programming Solve > Leetcode' 카테고리의 다른 글
LeetCode - Median of Two Sorted Arrays / C++ (0) | 2022.04.25 |
---|---|
리트코드(Leetcode) - Roman to Integer / C++ (0) | 2021.12.01 |
리트코드(Leetcode) - Palindrome number (0) | 2021.03.24 |