# 【LeetCode】 Counting Elements ## Description > Given an integer array `arr`, count element `x` such that `x + 1` is also in `arr`. > If there're duplicates in `arr`, count them seperately. > Constraints: > * `1 <= arr.length <= 1000` > * `0 <= arr[i] <= 1000` > 給予一正整數陣列`arr`,計算存在多少元素`x`當`x + 1`也在`arr`當中。 > 如果有重複的數在`arr`當中,將它們分開計算。 > 限制: > * `1 <= arr.length <= 1000` > * `0 <= arr[i] <= 1000` ## Example: ``` Example 1: Input: arr = [1,2,3] Output: 2 Explanation: 1 and 2 are counted cause 2 and 3 are in arr. Example 2: Input: arr = [1,1,3,3,5,5,7,7] Output: 0 Explanation: No numbers are counted, cause there's no 2, 4, 6, or 8 in arr. Example 3: Input: arr = [1,3,2,3,5,0] Output: 3 Explanation: 0, 1 and 2 are counted cause 1, 2 and 3 are in arr. Example 4: Input: arr = [1,1,2,2] Output: 2 Explanation: Two 1s are counted cause 2 is in arr. ``` ## Solution * 先跑一次迴圈,使用set紀錄哪些數字存在於陣列中。 * 再跑一次迴圈,根據剛剛的set計算`count`。 ### Code ```C++=1 class Solution { public: int countElements(vector<int>& arr) { set<int> hash; for(int i = 0; i < arr.size(); i++) hash.insert(arr[i] - 1); int count = 0; for(int i = 0; i < arr.size(); i++) if(hash.find(arr[i]) != hash.end()) count++; return count; } }; ``` ###### tags: `LeetCode` `C++`