首页 > 其他分享 >笛卡尔积

笛卡尔积

时间:2023-11-15 09:59:44浏览次数:29  
标签:笛卡尔 list curList resultList preList let tempPreList

项目中用到了数据组合问题,使用递归实现笛卡尔积,发现报内存溢出,给出解决办法:

 1 function Descartes1(list){
 2       let resultList = [];
 3       let srcLength = list.length;
 4       for(let i = 1;i < srcLength; i ++){
 5         let preList = i==1 ? list[i-1]: resultList;
 6         let curList = list[i];
 7         let tempPreList = []
 8         for(let j = 0; j < preList.length; j++){
 9           for(let k = 0; k < curList.length; k++){
10             if(i == 1){
11              tempPreList.push([preList[j],curList[k]]);
12             }else{
13                 tempPreList.push([...preList[j],curList[k]]);
14             }
15           }
16         }
17         resultList = tempPreList;
18       }
19             console.log(resultList .length)
20             return resultList;
21     }

具体思路:

使用循环每个两个数组的数据做笛卡尔积,使用递归牵涉到递归层级和数据深度问题,容易报内存溢出,改为循环可解决

标签:笛卡尔,list,curList,resultList,preList,let,tempPreList
From: https://www.cnblogs.com/zxl550/p/17833175.html

相关文章

  • 笛卡尔树入门
    笛卡尔树的定义笛卡尔树是一种二叉树,每一个结点由一个键值二元组\((k,w)\)构成。要求\(k\)满足二叉搜索树的性质,而\(w\)满足堆的性质。一个有趣的事实是,如果笛卡尔树的\(k,w\)键值确定,且\(k\)互不相同,\(w\)互不相同,那么这个笛卡尔树的结构是唯一的。——OIwiki笛......
  • 笛卡尔积、除、(外)连接等重要关系代数求解方法 概述
    关系代数这部分知识,在软考-数据库部分是比较重要的。   有五种基本的关系代数运算,并(符号为V)、差(符号为^)、投影()、笛卡尔积、选择,补充关系代数运算有,交、连接、除、广义投影、外连接。    1、笛卡尔积,从数学角度理解,就是将集合A和集合B中所有有序对元素集合。  ......
  • python基于动态数量个列表求笛卡尔积
    需求有N个list,分别是listA,listB,listC。。。等等,N的数量不确定,现在对这些list的所有可能组合的值求笛卡尔积,比如(listA,listB),(listA,listC),(listB,listC),(listA,listB,listC)。。。求这里每个组合的笛卡尔积。分析对实现以上需求,可分解为2个部分:1.求所有list的组合2.对所......
  • 第一章:笛卡尔坐标系
    第一章:笛卡尔坐标系1.一维数学在进入三维的学习之前,先厘清一些关于数字系统和计数的问题。自然数,又称计数数字。是几千年前发明的,可能是为了跟踪记录死羊(本书作者的神奇脑洞),也是数学的萌芽。将绵羊排成一排以便计数的习惯进而导致了数字排队的概念。负债概念的出现导致了负......
  • 数据库中什么是内连接、外连接、交叉连接、笛卡尔积;MySQL 的内连接、左连接、右连接有
    一、什么是内连接、外连接、交叉连接、笛卡尔积呢内连接(innerjoin):取得两张表中满足存在连接匹配关系的记录;外连接(outerjoin):不只取得两张表中满足存在连接匹配关系的记录,还包括某张表(或者两张表)中不满足匹配关系的记录。交叉连接(crossjoin):显示两张表所有记录一一对应,没有匹配关系......
  • 【学习笔记】(29) 笛卡尔树
    定义与性质笛卡尔树是一种二叉树,每一个结点由一个键值二元组\((k,w)\)构成。要求\(k\)满足二叉搜索树的性质,而\(w\)满足堆的性质。,也就是说,对于一个节点\(i\)的左儿子\(l_i\)和右儿子\(r_i\),一定满足\(l_i<i<r_i\)(下标\(k\)满足二叉搜索树的性质)且\(v_{l_i}\)与......
  • 并,交,差,笛卡尔积
        ......
  • 【学习笔记】笛卡尔树
    概述有若干二元组\((k,w)\),笛卡尔树要求关于\(k\)满足二叉搜索树的性质,关于\(w\)满足堆的性质。构建以要求\(w\)满足小根堆为例,使用单调栈维护当前的右链。现将所有二元组按\(k\)升序排序,每次插入一个元素时不断弹栈找到第一个小于\(w\)的节点,并将当前节点作为其右......
  • python:用Pandas实现笛卡尔积效果
       1importpandasaspd23456students=pd.DataFrame([[1,'Alice'],7[2,'Bob'],8[13,'John'],9[6,'Alex']],colu......
  • 笛卡尔树
    Part1:知识点笛卡尔树是一种二叉树,每个节点有两个两个值\((k,w)\)其中\(k\)满足二叉搜索树的性质,\(w\)满足二叉堆的性质一些性质任何子节点的\(w\)小于(或大于)父节点的\(w\)对于任何父节点,左节点的\(k\)小于父节点的\(k\),右节点的\(k\)大于父节点的\(k\)......