字节面试遇到的,已经基本做出来了,太紧张了。
回溯递归,很简单
function f(arr,re,tp,k){
if(tp.length===arr.length){
re.push([...tp])
}else{
for(let i=k;i<arr.length;i++){
for(let j=0;j<arr[i].length;j++){
tp.push(arr[i][j])
f(arr,re,tp,k+1)
tp.pop()
}
tp.pop()
}
}
}
let arr=[[1,2], [3,4,5], [6]],re=[],tp=[]
f(arr,re,tp,0)
console.log(re)
//[ [1,3,6], [1,4,6], [1,5,6], [2,3,6], [2,4,6], [2,5,6]]