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

题目:

题解:

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); 
    }
}

相关推荐

  1. 【leetcode题解C++】146. LRU缓存

    2024-06-12 06:54:05       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-12 06:54:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-12 06:54:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-12 06:54:05       82 阅读
  4. Python语言-面向对象

    2024-06-12 06:54:05       91 阅读

热门阅读

  1. 【C#】IndexOf的使用

    2024-06-12 06:54:05       32 阅读
  2. 二十、OOP之理解《匿名内部类》

    2024-06-12 06:54:05       28 阅读
  3. shell脚本

    2024-06-12 06:54:05       27 阅读