题目来源:力扣https://leetcode.cn/problems/single-number-ii/
题目简介:和1的差别就是数组里重复的数字次数变成了三次 ,然后要在不创建额外空间的情况下来找出那个不重复的数字;
思路:
哈希表存储键值对,键值存储数字,值存储出现次数,最后从哈希表里找就完了
代码实现:
struct HashTable {
int key, val;
UT_hash_handle hh;
};
int singleNumber(int *nums, int numsSize) {
struct HashTable *hashTable = NULL;
for (int i = 0; i < numsSize; i++) {
struct HashTable *tmp;
HASH_FIND_INT(hashTable, &nums[i], tmp);
if (tmp == NULL) {
tmp = malloc(sizeof(struct HashTable));
tmp->key = nums[i];
tmp->val = 1;
HASH_ADD_INT(hashTable, key, tmp);
} else {
tmp->val++;
}
}
int ans = 0;
struct HashTable *iter, *tmp;
HASH_ITER(hh, hashTable, iter, tmp) {
if (iter->val == 1) {
ans = iter->key;
break;
}
}
return ans;
}