版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

代码块
vector<int> getRandom(ListNode *node, int m) {
    vector<int> pool(m);
    int i = 0;
    while(i < m && node != nullptr) {
        pool[i] = node->val;
        node = node->next;
        i++;
    }

    while(node != nullptr) {
        int d = rand() % (i+1); // 随机获得一个[0,i]内的整数
        if(d < m) { // 如果整数落在[0,m-1]范围内,则替换蓄水池中的元素
            pool[d] = node->val;
        }
        node = node->next;
		i++;
    }

    return pool;
}


蓄水池抽样示例: