Skip to content

leetcode ​


使用C语言刷题时,没有现成的高级数据结构或者函数调用可用

leetcode常用变量 ​

变量名作用

leetcode可用C函数 ​

函数作用
abs(int a)计算绝对值
gcd()最大公约数
fmax(int a, int b)求最大值
qsort(void *base, size_t nitems, size_t size, int (*compar)(const void , const void))对数组进行排序

qsort ​

c
//比较函数
int compare(const void *a, const void *b)
{
    return *(int *)a - *(int *)b;
}

//排序函数
void sort(int *arr, int len)
{
    //调用qsort函数
    qsort(arr, len, sizeof(int), compare);
}

uthash ​

c
//结果体,必须包含UT_hash_handle
typedef struct {
    int key;
    int val;
    UT_hash_handle hh;  //这个变量必须定义,名字可以改
} HashItem;

//检查是否存在重复元素
void check(int* arr, int arrSize) {
    
    HashItem *head = NULL;  //定义头节点,这个变量必须为空指针
                             //如果使用单独的函数创建,请使用二级指针

    for (int i = 0; i < arrSize; i++) {
        HashItem *node = NULL; //新定义一个节点的指针
        HASH_FIND_INT(head, &sortedArr[i], node); //查找是否存在重复元素
        if (node == NULL) {  //元素不存在
            node = (HashItem *)malloc(sizeof(HashItem)); //分配空间
            node->key = sortedArr[i];
            node->val = HASH_COUNT(head) + 1; //记录下是hash表里第几个元素
            HASH_ADD_INT(head, key, node); //key按int类型插入
        }
    }

    //释放流程
    HashItem *cur, *tmp;
    HASH_ITER(hh, head, cur, tmp) {
        HASH_DEL(head, cur);  
        free(cur);             
    }
    return;
}