当前位置 : 主页 > 编程语言 > java >

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

来源:互联网 收集:自由互联 发布时间:2022-09-02
题目: 给你一个单链表,随机选择链表的一个节点,并返回相应的节点值。每个节点 被选中的概率一样 。 实现 Solution 类: Solution(ListNode head) 使用整数数组初始化对象。 int getRandom(

题目:

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

实现 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()));
}
}
上一篇:什么是堆和栈,它们在哪儿?(转)
下一篇:没有了
网友评论