aboutsummaryrefslogtreecommitdiff
path: root/single_number.cpp
blob: e9a58781e8dfd11b0e579353cb4814093fdcc2d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "leetcode.h"

class Solution {
public:
  int singleNumber(vector<int> &nums) {
    int ans;
    /*
     * unordered_map to track frequency
     * unordered_map<key data type, value data type>
     * both are int in this case.
     */
    unordered_map<int, int> freq;
    for (int i = 0; i < nums.size(); i++)
      /*
       * store frequency
       * given 4, 1, 2, 1, 2
       * 4 -> once
       * 1 -> twice
       * 2 -> twice
       * output: 4
       */
      freq[nums[i]]++;
    for (auto i : freq)    // traverse map
      if (i.second == 1) { // if frequency of any element is 1...
        ans = i.first;     // that's the answer
        break;             // exit loop because we have our answer
      }
    return ans;
  }
};

int main() {
  vector<int> nums = {4, 1, 2, 1, 2};
  Solution obj;
  for (int i = 0; i < nums.size(); i++)
    cout << nums[i] << ' ';
  cout << endl << obj.singleNumber(nums);
}