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

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

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

迷茫
迷茫

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

모든 응답(2)
左手右手慢动作

동일한 Solution 개체에 대해 getRandom을 여러 번 호출하는 테스트이므로 잘못된 버전에서 개체의 self.head를 수정했습니다. 여러 번 호출한 후 self.head가 None이고 while 루프가 실행되지 않습니다. 수정된 버전은 개체 헤드를 변경하지 않으므로 오류가 없다는 오류가 보고됩니다.

巴扎黑

문제는 res 변수에 있습니다. getRandom()res을 반환하지만 res 변수가 반환되기 전에는 특정 조건(while 조건 및 if 조건에서만 반환됩니다.) 충족됨). while 루프 본문이 실행되지 않았다고 가정하면 res은 반환되기 전에 값이 할당되지 않았습니다. Python 인터프리터는 어떤 값을 반환할지 모르므로 오류를 보고합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿