0
点赞
收藏
分享

微信扫一扫

C语言 | Leetcode C语言题解之第382题链表随机节点

捡历史的小木板 2024-09-01 阅读 22

题目:

题解:

typedef struct {
    struct ListNode * head;
} Solution;


Solution* solutionCreate(struct ListNode* head) {
    Solution * obj = (Solution *)malloc(sizeof(Solution));
    assert(obj != NULL);
    obj->head = head;
    return obj;
}

int solutionGetRandom(Solution* obj) {
    int i = 1, ans = 0;
    for (struct ListNode * node = obj->head; node; node = node->next) {
        if (rand() % i == 0) { // 1/i 的概率选中(替换为答案)
            ans = node->val;
        }
        ++i;
    }
    return ans;
}

void solutionFree(Solution* obj) {
    free(obj);
}
举报

相关推荐

0 条评论