输出所有的笛卡尔积组合

156 阅读1分钟

字节面试遇到的,已经基本做出来了,太紧张了。

回溯递归,很简单

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]]