---
# System prepended metadata

title: 217. Contains Duplicate
tags: [leetcode, hash table]

---

# 217. Contains Duplicate

題目：<https://leetcode.com/problems/contains-duplicate/>

解法：直接解，使用 set 來判斷重複，python 使用內建的型態，C 使用 leetcode 額外支援的型態 uthash。

Python3：

``` python 3
class Solution:
    def containsDuplicate(self, nums: list[int]) -> bool:
        hashSet = set()
        for num in nums:
            if num in hashSet:
                return True
            hashSet.add(num)
        return False

if __name__ == '__main__':
    nums = [1, 2, 3, 4]

    ans = Solution().containsDuplicate(nums)
    print(ans)

```

C：

``` c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "uthash.h"

typedef struct {
    int id;
    UT_hash_handle hh;
} hashEntry;

hashEntry *hashSet = NULL;

void hashSetAdd(int id) {
    hashEntry *e;
    HASH_FIND_INT(hashSet, &id, e);
    if (e == NULL) {
        e = (hashEntry*)malloc(sizeof(hashEntry));
        e->id = id;
        HASH_ADD_INT(hashSet, id, e);
    }
}

bool hashSetContains(int id) {
    hashEntry *e;
    HASH_FIND_INT(hashSet, &id, e);
    return (e != NULL);
}

void hashSetRemove(int id) {
    hashEntry *e;
    HASH_FIND_INT(hashSet, &id, e);
    HASH_DEL(hashSet, e);
    free(e);
}

void hashSetFree() {
    hashEntry *cur;
    hashEntry *tmp;

    HASH_ITER(hh, hashSet, cur, tmp) {
        HASH_DEL(hashSet, cur);
        free(cur);
    }
}

void hashSetPrint()
{
    hashEntry *e;
    for (e = hashSet; e != NULL; e = (hashEntry*)(e->hh.next)) {
        printf("id %d\n", e->id);
    }
    printf("\n");
}

bool containsDuplicate(int* nums, int numsSize) {
    hashSetFree();
    for (int i = 0; i < numsSize; i++) {
        if (hashSetContains(nums[i]))
            return true;
        hashSetAdd(nums[i]);
    }
    return false;
}

int main()
{
    int nums[] = {1, 2, 3, 4};
    int numsSize = sizeof(nums) / sizeof(nums[0]);
    
    bool ans = containsDuplicate(nums, numsSize);
    printf("%s\n", ans ? "True" : "False");

    hashSetFree();
    return 0;
}
```

###### tags: `leetcode` `hash table`
