擅长:python、mysql、java
<p>这一部分在逻辑上不正确:</p>
<pre class="lang-py prettyprint-override"><code> if dL1[1:] == [] or dL2[1:] == []:
return 0
</code></pre>
<p>基本情况应该是一个或两个列表都为空。但当一个或两个列表都有一个元素时,返回0。这是不正确的,因为该元素仍然可能是匹配的,所以交叉点的大小不会是0。如果将此条件更改为<code>dL1 == [] or dL2 == []</code>,则它可以工作:</p>
<pre class="lang-py prettyprint-override"><code>>>> intersection(L1, L2)
2
>>> intersection(L1, L3)
5
>>> intersection([1, 6, 1, 4], [1, 2, 3, 4])
2
>>> intersection([1, 1, 1, 2, 2], [1, 1, 2, 2, 2])
4
</code></pre>