-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathsolution.cpp
40 lines (36 loc) · 848 Bytes
/
solution.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**
* 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) {}
* };
*/
/**
* 8 / 8 test cases passed.
* Runtime: 20 ms
* Memory Usage: 16 MB
*/
class Solution {
public:
Solution(ListNode* head) : head_(head) { }
int getRandom() {
int i = 1, ret = 0;
for (auto cur = head_; cur; cur = cur->next) {
if (rand() % i == 0) {
ret = cur->val;
}
++ i;
}
return ret;
}
private:
ListNode *head_;
};
/**
* Your Solution object will be instantiated and called as such:
* Solution* obj = new Solution(head);
* int param_1 = obj->getRandom();
*/