跨境电商发展现状如何,新网站排名优化怎么做,手机网站开发一个多少钱,wordpress 用户头像Problem: 382. 链表随机节点 文章目录 思路解题方法复杂度Code 思路 注意链表与数组的特性#xff0c;对于随机访问读取的操作利用数组可以较方便实现#xff0c;所以我们可以将链表中的节点值先存入到数组中最后再取出随机生成节点位置的值。 解题方法 1.生成List集合与Rand… Problem: 382. 链表随机节点 文章目录 思路解题方法复杂度Code 思路 注意链表与数组的特性对于随机访问读取的操作利用数组可以较方便实现所以我们可以将链表中的节点值先存入到数组中最后再取出随机生成节点位置的值。 解题方法 1.生成List集合与Random对象并在构造器中完成对其的初始化。 2.将链表的节点值存入到List集合中 3.随机返回一个节点值 复杂度
时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/
class Solution {//Time Complexity: O(N)//Space Complexity: O(N)ListInteger list;Random random;public Solution(ListNode head) {ListNode p head;list new ArrayList();//将节点都添加到list集合while (p ! null) {list.add(p.val);p p.next;}random new Random();}public int getRandom() {return list.get(random.nextInt(list.size()));}
}/*** Your Solution object will be instantiated and called as such:* Solution obj new Solution(head);* int param_1 obj.getRandom();*/