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

C语言 | Leetcode C语言题解之第355题设计推特

题目:

题解:

typedef struct {
    int tweetId;
    int userId;
} Tweet;

typedef struct {
    int* dict[501];
    Tweet* tweetList;
    int tweetListLen;
} Twitter;

Twitter* twitterCreate() {
    Twitter* obj = malloc(sizeof(Twitter));
    for (int i = 0; i < 501; i++) {
        obj->dict[i] = calloc(501, sizeof(int));
        obj->dict[i][i] = 1;
    }
    obj->tweetList = malloc(30000 * sizeof(Tweet));
    obj->tweetListLen = 0;
    return obj;
}

void twitterPostTweet(Twitter* obj, int userId, int tweetId) {
    obj->tweetList[obj->tweetListLen].tweetId = tweetId;
    obj->tweetList[obj->tweetListLen].userId = userId;
    obj->tweetListLen++;
    return;
}

int* twitterGetNewsFeed(Twitter* obj, int userId, int* retSize) {
    int* res = malloc(10 * sizeof(int));
    *retSize = 0;
    for (int i = obj->tweetListLen - 1; i >= 0; i--) {
        if (obj->dict[userId][obj->tweetList[i].userId] == 1) {
            res[*retSize] = obj->tweetList[i].tweetId;
            (*retSize)++;
        }
        if (*retSize == 10) {
            break;
        }
    }
    return res;
}

void twitterFollow(Twitter* obj, int followerId, int followeeId) {
    obj->dict[followerId][followeeId] = 1;
    return;
}

void twitterUnfollow(Twitter* obj, int followerId, int followeeId) {
    obj->dict[followerId][followeeId] = 0;
    return;
}

void twitterFree(Twitter* obj) {
    for (int i = 0; i < 501; i++) {
        free(obj->dict[i]);
    }
    free(obj->tweetList);
    free(obj);
    return;
}

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

相关文章:

  • Git Clone
  • QGC地面站连接roslanch创建的仿真无人机
  • 【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(十六)
  • 【C/C++】类型转换
  • 使用统计方法在AMD GPU上使用JAX Profiler可靠地比较大型生成AI模型中的算法性能
  • 关于告警,要想做好,从这些方面着手
  • TCP+UDP通信
  • 农业四情监测设备的工作原理
  • Linux系统编程:UDP和TCP
  • Day16_Zookeeper
  • SCDN的优势在哪?Edge SCDN与传统SCDN有何不同?
  • 数字经济下的支付风控新策略:区块链积分系统
  • Linux 性能观测之CPU平均负载
  • Android经典实战之Kotlin的delay函数和Java中的Thread.sleep有什么不同?
  • 8.26 T4 日记和编辑器(fhq维护kmp——kmp本身含有的单射与可合并性)
  • 超详细!!!安装Android studio创建flutter项目并运行到模拟器
  • PostgreSQL死锁问题(Deadlock found when trying to get lock)如何快速定位原因及解决
  • 【区块链 + 司法存证】易保全区块链电子数据存证保全系统 | FISCO BCOS应用案例
  • Mysql基础练习题 182.编写解决方案来报告所有重复的电子邮件 (力扣)
  • 【单片机】51单片机中的`data`与`code`关键字详解