C语言 | Leetcode C语言题解之第146题LRU缓存

题目:

题解:

cpp 复制代码
typedef struct {
    int key;
    int val;
    UT_hash_handle hh;
} LRUCache;

LRUCache* cache = NULL;
int g_capacity = 0;
LRUCache** lRUCacheCreate(int capacity) {
    g_capacity = capacity;
    return &cache;
}

int lRUCacheGet(LRUCache** obj, int key) {
    LRUCache* s;

    HASH_FIND_INT(*obj, &key, s);
    if (s) {
        HASH_DEL(*obj, s);
        HASH_ADD_INT(*obj, key, s);
        return s->val;
    }

    return -1;
}

void lRUCachePut(LRUCache** obj, int key, int value) {
    LRUCache* s = NULL;

    HASH_FIND_INT(*obj, &key, s);
    if (s) {
        HASH_DEL(*obj, s);
    }
    s = (LRUCache*) malloc(sizeof (*s));
    s->key = key;
    HASH_ADD_INT(*obj, key, s);
    s->val = value;

    s = *obj;
    int capacity = HASH_COUNT(*obj);
    if (capacity > g_capacity) {
        HASH_DEL(*obj, s);
        free(s);
    }
}

void lRUCacheFree(LRUCache** obj) {
    LRUCache *current_user, *tmp;

    HASH_ITER(hh, *obj, current_user, tmp) {
        HASH_DEL(*obj, current_user); 
        free(current_user); 
    }
}
相关推荐
记得早睡~3 分钟前
leetcode73-矩阵置零
数据结构·leetcode·矩阵
爱coding的橙子25 分钟前
每日算法刷题Day27 6.9:leetcode二分答案2道题,用时1h20min
算法·leetcode·职场和发展
CodeWithMe3 小时前
【C/C++】高效的位操作
c语言·c++
学习噢学个屁4 小时前
基于STM32物联网智能鱼缸智能家居系统
c语言·stm32·单片机·嵌入式硬件·物联网·智能家居
圈圈编码7 小时前
LeetCode Hot100刷题——合并两个有序链表
java·数据结构·算法·leetcode·链表
岁忧7 小时前
LeetCode 高频 SQL 50 题(基础版)之 【高级字符串函数 / 正则表达式 / 子句】· 下
sql·leetcode·正则表达式
啊我不会诶7 小时前
篮球杯软件赛国赛C/C++ 大学 B 组补题
c语言·c++
laocooon52385788610 小时前
win操作系统安装C++语言开发环境之一, vscode +MinGW ,流程
c语言
奔跑吧邓邓子11 小时前
解锁Vscode:C/C++环境配置超详细指南
c语言·c++·vscode·配置指南