走廊上有n个带锁的门,从1到n依次编号。最初所有的门都是关着的。我们从门前经过n次,每次都是从1号门开始。在第i次经过的时候改变第i个整数倍号所的状态。在最后一次经过的后,哪些门是打开的,输出打开门的序号defopenDoor(...
&039;&039;&039;输入一棵二叉树,判断该二叉树是否是平衡二叉树。&039;&039;&039;-*-coding:utf-8-*-classTreeNode:def__init__(self,...
classnearestPoint:def__init__(self,aList):self.aList=aListdefcalculate(self):ifse...
在8*8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处在同一行,同一列或者同一对角线上可以用回溯法,也可以用下面的判别方法:由于8各皇后的任意两个不能处在同一行,那么肯定每一个皇后占据一行。定义一个数组co...
&039;&039;&039;输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。二叉搜索树对于每一个非叶子节点,均有结点左子节点<...
&039;&039;&039;稀疏矩阵的转置输入:一个稀疏矩阵输出:矩阵的转置方法:中间可以利用三元组进行操作&039;&039;&039;fromnumpyimport*defsparseToTriple...
&039;&039;&039;利用三元组完成稀疏矩阵相乘&039;&039;&039;fromnumpyimport*defsparseToTriple(matrix):m,n=shape(matri...
回溯法。类似于Python矩阵中的路径。把方格看成一个m*n的矩阵,从(0,0)开始移动。当准备进入坐标(i,j)是,通过检查坐标的数位来判断机器人能否进入。如果能进入的话,接着判断四个相邻的格子。&039;&039;&039;地...
回溯法。任选一个格子作为路径的起点。假设矩阵中某个格子的字符为ch并且这个格子将对应于路径上的第i个字符。如果路径上的第i个字符不是ch,那么这个格子不可能处在路径上的第i个位置。如果路径上的第i个字符正好是ch,那么往相邻的格子寻找...
我们把可能成为滑动窗口的最大值的数值下标存入一个两端开口的队列index中。首先遍历输入数组,在遍历次数小于窗口长度的时候,如果index数组里面含有元素而且元素后面的下标值对应的输入数组的数如果小于当前遍历到的输入数组元素值,那么就...
构建一个最大堆和一个最小堆,分别存储比中位数小的数和大的数。当目前两堆总数为偶数的时候,把数字存入最大堆,然后重排最大堆,如果最大堆的堆顶数字大于最小堆堆顶数字,则把两个堆顶数字交换,重排两堆,此时两堆数字总数为奇数,直接输出最大堆堆...
中序遍历输出一个序列,然后找到序列中第k个数即可。
最终要实现的是二叉树的序列化和反序列化。首先来看二叉树的序列化,二叉树的序列化就是采用前序遍历二叉树输出节点,再碰到左子节点或者右子节点为None的时候输出一个特殊字符""。对于反序列化,就是针对输入的一个序列构建一棵二叉树,我们可以...
按之字形顺序打印二叉树需要两个栈。我们在打印某一行节点时,拔下一层的子节点保存到相应的栈里。如果当前打印的奇数层,则先保存左子节点再保存右子节点到第一个栈里;如果当前打印的是偶数层,则先保存右子节点再保存左子节点到第二个栈里。&039...
引入两个队列。首先把当前层的节点存入到一个队列queue1中,然后遍历当前队列queue1,在遍历的过程中,如果节点有左子树或右子树,依次存入另一个队列queue2。然后遍历队列queue2,如此往复。&039;&039;&039;...