就是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了
为什么啊? 谢谢,实在不懂, 出错的那个测试用例我也不明白,这么多中括号表示什么啊?
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.
Masalahnya terletak pada pembolehubah
res
getRandom()
mengembalikanres
, tetapi sebelum pembolehubahres
dikembalikan, ia hanya dikembalikan dalam keadaan tertentu (keadaanwhile
dan keadaanif
. dipenuhi). Dengan mengandaikan bahawawhile
badan gelung anda belum dilaksanakan, makares
belum diberikan nilai sebelum dipulangkan.