擅长:python、mysql、java
<p>这是一个单线解决方案,但性能不太好:</p>
<pre><code>parents = [ 2, 3, 1, 5, 4, 7, 8, 9, 6, 10 ]
children = [ [4,5], [0,11], [6,10], [1,7], [8,9], [12,13], [14,15], [16,17], [18,19], [20,21] ]
generation=[(lambda f,*x:f(f,*x))(lambda g,i,c:max(g(g,j,c)+1for j in c[i])if i in c else 0,i,dict(zip(parents,children)))for i in parents]
print(generation)
</code></pre>
<p>PS:您提供的父数组和子数组定义缺少一些逗号。你知道吗</p>
<p><strong>更新</p>
<p>以下是性能版本,以记忆递归为特征:</p>
<pre><code>parents = [ 2, 3, 1, 5, 4, 7, 8, 9, 6, 10 ]
children = [ [4,5], [0,11], [6,10], [1,7], [8,9], [12,13], [14,15], [16,17], [18,19], [20,21] ]
generation=(lambda c:list(map((lambda f,m={}:lambda x:m[x]if x in m else m.setdefault(x,f(f,x)))(lambda g,i:max(g(g,j)+1for j in c[i])if i in c else 0),parents)))(dict(zip(parents,children)))
print(generation)
</code></pre>