給你乙個單鏈表,隨機選擇鍊錶的乙個節點,並返回相應的節點值。每個節點 被選中的概率一樣 。
實現 solution 類:
solution(listnode head) 使用整數陣列初始化物件。
int getrandom() 從鍊錶中隨機選擇乙個節點並返回該節點的值。鍊錶中所有節點被選中的概率相等。
/**
* definition for singly-linked list.
* struct listnode
* listnode(int x) : val(x), next(nullptr) {}
* listnode(int x, listnode *next) : val(x), next(next) {}
* };
*/class solution
int getrandom()
node = node->next;
}return ans;
}};/**
* your solution object will be instantiated and called as such:
* solution* obj = new solution(head);
* int param_1 = obj->getrandom();
*/
382 鍊錶隨機節點
382.鍊錶隨機節點 給定乙個單鏈表,隨機選擇鍊錶的乙個節點,並返回相應的節點值。保證每個節點被選的概率一樣。高階 如果鍊錶十分大且長度未知,如何解決這個問題?你能否使用常數級空間複雜度實現?示例 初始化乙個單鏈表 1,2,3 listnode head new listnode 1 head.ne...
382 鍊錶隨機節點
原理參考 蓄水池抽樣 程式設計珠璣 讀書筆記 思路 以1 m的概率選擇第m個物件 思路 高階 如果鍊錶十分大且長度未知,如何解決這個問題?你能否使用常數級空間複雜度實現?class solution def init self,head listnode self.head head defgetr...
蓄水池抽樣演算法 隨機洗牌演算法
蓄水池抽樣演算法隨機演算法的一種,用來從 n 個樣本中隨機選擇 k 個樣本,其中 n 非常大 以至於 n 個樣本不能同時放入記憶體 或者 n 是乙個未知數。其時間複雜度為 o n 包含下列步驟 假設有一維陣列 s,長度未知,需要從中隨機選擇 k 個元素,陣列下標從 1 開始 偽 如下 init a ...