0
点赞
收藏
分享

微信扫一扫

水塘抽样及LeetCode398题随机数索引

骨灰级搬砖工 2022-04-25 阅读 42

水塘抽样

Leetcode398题随机数索引 

代码 

typedef struct {
    int *nums;
    int numsSize;
} Solution;


Solution* solutionCreate(int* nums, int numsSize) {
    Solution *obj = (Solution *)malloc(sizeof(Solution));
    obj->nums = nums;
    obj->numsSize = numsSize;
    return obj;
}

int solutionPick(Solution* obj, int target) {
    int ans;
    for (int i = 0, cnt = 0; i < obj->numsSize; ++i) {
        if (obj->nums[i] == target) {
            ++cnt; 
            if (rand() % cnt == 0) {
                ans = i;
            }
        }
    }
    return ans;
}

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

相关推荐

0 条评论