当前位置: 首页 > article >正文

C语言 | Leetcode C语言题解之第519题随机翻转矩阵

题目:

题解:


typedef struct {
    unsigned long long val;
    UT_hash_handle hh;
} Hash;

typedef struct {
    Hash *hash;
    int n_rows;
    int n_cols;
} Solution, SL;


Solution* solutionCreate(int n_rows, int n_cols) {
    SL *obj = malloc(sizeof(SL));
    obj->hash = NULL;
    obj->n_rows = n_rows;
    obj->n_cols = n_cols;
    return obj;
}

int* solutionFlip(Solution* obj, int* retSize) {
    *retSize = 2;
    int *res = malloc(2 * sizeof(int));
    while (true) {
        int x = rand() % obj->n_rows;
        int y = rand() % obj->n_cols;
        unsigned long long t = x;
        t <<= 32;
        t |= y;
        // printf("%ld\n", t);
        Hash *p;
        HASH_FIND(hh, obj->hash, &t, sizeof(unsigned long long), p);
        if (!p) {
            res[0] = x;
            res[1] = y;
            p = malloc(sizeof(Hash));
            p->val = t;
            HASH_ADD(hh, obj->hash, val, sizeof(unsigned long long), p);
            break;
        }
    }
    return res;
}

void solutionReset(Solution* obj) {
    Hash *cur, *tmp;
    HASH_ITER(hh, obj->hash, cur, tmp) {
        HASH_DEL(obj->hash, cur);
    }
}

void solutionFree(Solution* obj) {
    Hash *cur, *tmp;
    HASH_ITER(hh, obj->hash, cur, tmp) {
        HASH_DEL(obj->hash, cur);
        free(cur);
    }
    free(obj);
}

/**
 * Your Solution struct will be instantiated and called as such:
 * Solution* obj = solutionCreate(n_rows, n_cols);
 * int* param_1 = solutionFlip(obj, retSize);
 
 * solutionReset(obj);
 
 * solutionFree(obj);
*/

http://www.kler.cn/a/376084.html

相关文章:

  • 免费送源码:Java+Springboot+MySQL Springboot酒店客房管理系统的设计与实现 计算机毕业设计原创定制
  • WordPress网站添加嵌入B站视频,自适应屏幕大小,取消自动播放
  • SpringBoot实现zip压缩包下载
  • .NET Core WebApi第7讲:项目的发布与部署
  • 动态规划之两个数组的 dp(上)
  • 代码随想录算法训练营第三十三天|Day33 动态规划
  • 金华迪加 现场大屏互动系统 mobile.do.php 任意文件上传漏洞复现
  • R 数据框
  • RabbitMQ 存储机制
  • 像`npm i`作为`npm install`的简写一样,使用`pdm i`作为`pdm install`的简写
  • ARM base instruction -- madd
  • 函数的多返回值及多种传参方式
  • Python 的基本语法
  • 【C#】异步和多线程
  • 速度!双击文件就可以运行本地大模型!神奇的AI大模型开源项目——llamafile
  • Redis中储存含LocalDateTime属性对象的序列化实现
  • R数据结构向量基础
  • 公有云开发基础教程
  • 汽车固态电池深度报告
  • 4K双模显示器值得买吗?
  • Python WordCloud库与jieba分词生成词云图的完整指南
  • Ollama:本地部署与运行大型语言模型的高效工具
  • 在kanzi 3.9.8里使用API创建自定义材质
  • PHP反序列化原生类字符串逃逸框架反序列化利用
  • 奥数与C++小学四年级(第十七题 弹跳板)
  • blender雕刻基础 笔记