0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点# leetcode算法题:链表随机节点

题目:

给你一个单链表,随机选择链表的一个节点,并返回相应的节点值。每个节点 被选中的概率一样 。

实现 Solution 类:

Solution(ListNode head) 使用整数数组初始化对象。

int getRandom() 从链表中随机选择一个节点并返回该节点的值。链表中所有节点被选中的概率相等。

 

示例:

输入

["Solution", "getRandom", "getRandom", "getRandom", "getRandom", "getRandom"]

[[[1, 2, 3]], [], [], [], [], []]

输出

[null, 1, 3, 2, 2, 3]

解释

Solution solution = new Solution([1, 2, 3]);

solution.getRandom(); // 返回 1

solution.getRandom(); // 返回 3

solution.getRandom(); // 返回 2

solution.getRandom(); // 返回 2

solution.getRandom(); // 返回 3

// getRandom() 方法应随机返回 1、2、3中的一个,每个元素被返回的概率相等。

代码实现:

class Solution {
List<Integer> list;
Random random;

public Solution(ListNode head) {
list = new ArrayList<Integer>();
while (head != null) {
list.add(head.val);
head = head.next;
}
random = new Random();
}

public int getRandom() {
return list.get(random.nextInt(list.size()));
}
}

举报

相关推荐

0 条评论