382. 链表随机节点 - 力扣(LeetCode) (leetcode-cn.com)
空间换取时间:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
vector<int> v;
Solution(ListNode* head) {
while(head){
v.push_back(head->val);
head=head->next;
}
}
int getRandom() {
int num=rand()%v.size();
return v[num];
}
};
/**
* Your Solution object will be instantiated and called as such:
* Solution* obj = new Solution(head);
* int param_1 = obj->getRandom();
*/
时间换取空间:
水池问题,以后来补