implementación Java LeetCode 388 lista de nodos al azar

382. lista de nodos al azar

Dada una única lista enlazada, seleccionar al azar una lista enlazada de nodos, los nodos y devuelve el valor correspondiente. Para asegurarse de que se selecciona la misma probabilidad de cada nodo.

Avanzado:
Si la lista es muy grande y la longitud de la desconocida, la forma de resolver este problema? Se puede utilizar un espacio complejidad nivel constante de lograr?

Ejemplo:

// inicializar una sola cadena [l, 2,3].
NodoLista nuevo nuevo NodoLista cabeza = (1.);
Head.next = nuevo nuevo NodoLista (2);
(. 3) NodoLista head.next.next nuevos nuevos =;
Solución Solución Solución = new nuevo (cabeza);

// getRandom () devuelve el método un azar 1,2,3 debe garantizar la igualdad de probabilidad de cada elemento que se devuelve.
solution.getRandom ();

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {

   private ListNode head;
    public Solution(ListNode head) {
       this.head = head;
    }
 
    public int getRandom() {
        int res = head.val;
        ListNode no = head.next;
        int i = 2;
        Random random = new Random();
        while(no!=null){
            if(random.nextInt(i) == 0){
                res = no.val;
            }
            i++;
            no = no.next;
        }
        return res;

    }
}

/**
 * Your Solution object will be instantiated and called as such:
 * Solution obj = new Solution(head);
 * int param_1 = obj.getRandom();
 */
Liberadas 1494 artículos originales · ganado elogios 20000 + · vistas 1,87 millones +

Supongo que te gusta

Origin blog.csdn.net/a1439775520/article/details/104806938
Recomendado
Clasificación