Rumah  >  Soal Jawab  >  teks badan

python - leetcode返回单链表任意节点,提示未声明?

就是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了

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

迷茫迷茫2742 hari yang lalu971

membalas semua(2)saya akan balas

  • ringa_lee

    ringa_lee2017-04-18 09:52:12

    Oleh kerana ujian adalah untuk memanggil getRandom beberapa kali pada objek Penyelesaian yang sama, anda mengubah suai self.head objek dalam versi yang salah Selepas berbilang panggilan, self.head adalah Tiada, dan gelung while tidak dilaksanakan, jadi ralat dilaporkan mengatakan res Undefined versi yang diubah suai tidak mengubah kepala objek, jadi tiada ralat.

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:52:12

    Masalahnya terletak pada pembolehubah res getRandom() mengembalikan res, tetapi sebelum pembolehubah res dikembalikan, ia hanya dikembalikan dalam keadaan tertentu (keadaan while dan keadaan if. dipenuhi). Dengan mengandaikan bahawa while badan gelung anda belum dilaksanakan, maka res belum diberikan nilai sebelum dipulangkan.

    balas
    0
  • Batalbalas