반응형
https://leetcode.com/problems/single-number/
자료구조를 이용한 구현문제였습니다.
📕 풀이방법
📔 풀이과정
1. 배열을 이용한 풀이 1-1. 배열의 index를 nums의 원소, 해당 index의 원소는 빈도 수라고 생각해 count를 선언해줍니다. 1-2. nums의 원소를 순회하며 빈도 수를 세줍니다. 음수 index를 고려해 3만을 더한 index에 저장해줍니다. 1-3. count의 원소를 순회하며 빈도수가 1이라면 i - 30000의 값이 정답이므로 그 값을 ans에 저장해줍니다.2. map을 이용한 풀이
2-1. key를 nums의 원소, value는 빈도 수로 생각해 변수 countMap 을 선언해줍니다.
2-2. nums의 원소를 순회하며 빈도 수를 세줍니다. 이는 음수 index를 고려할 필요없습니다.
2-3. countMap의 원소를 순회하며 빈도수가 1이라면 countMap.first값이 정답이므로 그 값을 ans에 저장합니다.
📔 정답출력
ans를 반환합니다.
📕 Code
📔 C++
📑 배열을 이용한 풀이
class Solution {
public:
int singleNumber(vector<int>& nums) {
vector <int> count(100000,0);
int ans = 0;
for(auto &n : nums) {
count[n + 30000]++;
}
for(int i = 0; i < 100000; i++) {
if(count[i] == 1) {
ans = i - 30000;
break;
}
}
return ans;
}
};
📑 map을 이용한 풀이
class Solution {
public:
int singleNumber(vector<int>& nums) {
map <int, int> countMap;
int ans = 0;
for(auto &n : nums) {
countMap[n]++;
}
for(auto el : countMap) {
if(el.second == 1) {
ans = el.first;
break;
}
}
return ans;
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > 자료구조' 카테고리의 다른 글
(C++) - LeetCode (easy) 144. Binary Tree Preorder Traversal (0) | 2022.12.05 |
---|---|
(C++) - LeetCode (easy) 141. Linked List Cycle (0) | 2022.12.02 |
(C++) - LeetCode (easy) 1. Two Sum (0) | 2022.11.26 |
(C++) - LeetCode (easy) 112. Path Sum (0) | 2022.11.25 |
(C++) - LeetCode (easy) 111. Minimum Depth of Binary Tree (0) | 2022.11.24 |