본문 바로가기

Algorithm/자료구조

(C++) - LeetCode (easy) 136. Single Number

반응형

https://leetcode.com/problems/single-number/

 

Single Number - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

자료구조를 이용한 구현문제였습니다.

📕 풀이방법

📔 풀이과정

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;
    }
};

 

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.