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

题目:

题解:

cpp 复制代码
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;
}
相关推荐
北顾笙9801 小时前
day37-数据结构力扣
数据结构·算法·leetcode
handler011 小时前
Git 核心指令速查
linux·c语言·c++·笔记·git·学习
学会去珍惜1 小时前
学会C语言可以做什么
c语言·网络编程·游戏开发·嵌入式系统·系统编程
『昊纸』℃2 小时前
Mac上编译C语言的简易方法
c语言·mac·教程·xcode·编译
代码中介商2 小时前
C语言核心知识完全回顾:从数据类型到动态内存管理
c语言·开发语言
xiaobobo33302 小时前
c语言源文件中#include包含头文件的起始路径是哪里?
c语言·头文件包含·起始路径·起始点
jimy13 小时前
C语言中的 “size_t ”类型
c语言·开发语言
wuminyu3 小时前
专家视角看Lambda表达式的原理解析
java·linux·c语言·jvm·c++
modelmd3 小时前
研究C语言的hello world输出
c语言·开发语言·chrome
6Hzlia3 小时前
【Hot 100 刷题计划】 LeetCode 189. 轮转数组 | C++ 三次反转经典魔法 (O(1) 空间)
c++·算法·leetcode