擅长:python、mysql、java
<blockquote>
<p>That is, L1 gives 0<4<1<2<3 while L2 gives 0<=4<1<2<=3. One can see that if two of these
indices are <= each other in one list, that is true in both lists.</p>
</blockquote>
<p>对不起,您在这里给出的compatible的定义与您的示例不匹配。在L2中,4<;=0,但L1中不是这样。我怀疑你想要给出的定义是:如果a<;b在一个列表中,那么a<;=b在另一个列表中。在</p>
<p>在这种情况下,以前的解决方案都不起作用。L1=[1,1]和L2=[2,1]应该兼容。在</p>
<p>不需要意识到任何解决方案都是可传递的。例如,如果L1=[1,2],L2=[1,1],L3=[2,1],则L1与L2兼容,L2与L3兼容,但L1与L3不兼容。因此,任何检查从列表中计算的“排序”之间是否相等的解决方案都将失败。在</p>
<p>Thiago Chaves的解决方案没有这个问题,但是它在L1=[2,2,1],L2=[2,1,1]时失败。这些应该是兼容的。在</p>
<p>编辑:如果效率不是一个大问题,这里有一个快速的O(N^2)解决方案,它只需测试每对数字:</p>
<pre><code>def compat5(L1, L2):
z = zip(L1, L2)
return not any(j1<k1 and j2>k2 for j1,j2 in z for k1,k2 in z)
</code></pre>