zoukankan      html  css  js  c++  java
  • linked-list-random-node

    https://leetcode.com/problems/linked-list-random-node/
    
    // Using Reservoir sampling algorithm
    // https://discuss.leetcode.com/topic/53812/using-reservoir-sampling-o-1-space-o-n-time-complexity-c/2
    
    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    public class Solution {
        ListNode h;
        java.util.Random rand;
    
        /** @param head The linked list's head.
            Note that the head is guaranteed to be not null, so it contains at least one node. */
        public Solution(ListNode head) {
            h = head;
            rand = new java.util.Random();
        }
        
        /** Returns a random node's value. */
        public int getRandom() {
            if (h == null) {
                return 0;
            }
            
            int ret = h.val;
            int i = 1;
            ListNode cur = h;
            while (cur.next != null) {
                cur = cur.next;
                i++;
                int f = rand.nextInt() % i;
                if (f == 0) {
                    ret = cur.val;
                }
            }
            return ret;
        }
    }
    
    /**
     * Your Solution object will be instantiated and called as such:
     * Solution obj = new Solution(head);
     * int param_1 = obj.getRandom();
     */
  • 相关阅读:
    如何做兼容性测试
    python批量转换excl为csv
    mysql删除用户后再次创建用户报错
    xadmin
    CORS跨域资源共享
    drf自定义公共组件
    luffy项目前端初始化
    luffy项目后端初始化
    企业级项目的环境准备
    base64编码的使用
  • 原文地址:https://www.cnblogs.com/charlesblc/p/5814601.html
Copyright © 2011-2022 走看看