题目来源:力扣https://leetcode.cn/problems/contains-duplicate/
题目简介:
给一个数组,有重复元素返回true,没有重复元素返回false。
思路:
还是创建一个哈希表,用键值指对来判断是否有重复元素,元素名称为key,次数为值。最后遍历哈希表,就能判断了;或者说直接用哈希集存储key值,遍历数组如果哈希集中有了的,就直接返回true,直到遍历完也没有重复则返回false
代码实现:
struct hashTable {
int key;
UT_hash_handle hh;
};
bool containsDuplicate(int* nums, int numsSize) {
struct hashTable* set = NULL;
for (int i = 0; i < numsSize; i++) {
struct hashTable* tmp;
HASH_FIND_INT(set, nums + i, tmp);
if (tmp == NULL) {
tmp = malloc(sizeof(struct hashTable));
tmp->key = nums[i];
HASH_ADD_INT(set, key, tmp);
} else {
return true;
}
}
return false;
}