剪绳子
剪绳子 题目描述 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 分析 ​ 可以先试着找…
包含min函数的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))
平衡二叉树
平衡二叉树 描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 平衡二叉树是指:父节点的左子树和右子树的高度之差不能大于1。 那么可以从底部遍历,判断子树是否是平衡二叉树,是则返回高度,否则停止遍历,返回false。 这样也保证了每个节点只访问一次。 public boolean IsBalanced_Solution(TreeNode root…
矩形覆盖
矩形覆盖 描述 我们可以用2 1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 这个题目有点类似青蛙跳台阶,同时也是斐波那契数列。 当target<3时分别有target种排列方法。对于>=3时有两种情况 第一次摆放一块 2*1 的小矩阵,则摆放方法总共为f(target …