就是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了
为什么啊? 谢谢,实在不懂, 出错的那个测试用例我也不明白,这么多中括号表示什么啊?
동일한 Solution 개체에 대해 getRandom을 여러 번 호출하는 테스트이므로 잘못된 버전에서 개체의 self.head를 수정했습니다. 여러 번 호출한 후 self.head가 None이고 while 루프가 실행되지 않습니다. 수정된 버전은 개체 헤드를 변경하지 않으므로 오류가 없다는 오류가 보고됩니다.
문제는
res
변수에 있습니다.getRandom()
은res
을 반환하지만res
변수가 반환되기 전에는 특정 조건(while
조건 및if
조건에서만 반환됩니다.) 충족됨).while
루프 본문이 실행되지 않았다고 가정하면res
은 반환되기 전에 값이 할당되지 않았습니다. Python 인터프리터는 어떤 값을 반환할지 모르므로 오류를 보고합니다.