python - leetcode返回单链表任意节点,提示未声明?
迷茫
迷茫 2017-04-18 09:50:12
0
2
958

就是leetcode382
Linked List Random Node

Given a singly linked list, return a random node's value from the linked list. Each node must have the same probability of being chosen.

然后我写的问题如下:

但是把self.head用新变量head,s或者其他什么字母声明一下,改成:

    ···
    cnt = 0
    head = self.head
    while head:
        if random.randint(0, cnt) == 0:
            ans = head.val
        head = head.next
        cnt += 1
    return ans

就通过了,AC了

为什么啊? 谢谢,实在不懂, 出错的那个测试用例我也不明白,这么多中括号表示什么啊?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(2)
左手右手慢动作

Comme le test consiste à appeler getRandom plusieurs fois sur le même objet Solution, vous avez modifié le self.head de l'objet dans la mauvaise version. Après plusieurs appels, self.head vaut None et la boucle while n'est pas exécutée, donc un. une erreur est signalée disant res Undefined ; la version modifiée ne change pas l’en-tête de l’objet, il n’y a donc pas d’erreur.

巴扎黑

Le problème réside dans la variable res. getRandom() renvoie res, mais avant que la variable res ne soit renvoyée, elle n'est renvoyée que sous certaines conditions (la condition while et la condition if sont remplies). En supposant que le corps de votre boucle while n'a pas été exécuté, alors res n'a pas reçu de valeur avant de revenir. L'interpréteur python ne sait pas quelle valeur renvoyer, il signale donc une erreur.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!