Problem: There are three poles and N disks where each disk is heaver than the next disk. In the initial congur…
(算法-字符串)最长对称子串
题目: 输入字符串中对称的子字符串的最大长度。比如输入字符串“roorle”,由于该字符串里最长的对称子字符串是“roor”,因此输出4. 思路: 1、求字符串”roorle“和反序”elroor“的最长公共子串 2、最…
(算法)扔棋子
题目: 1、有一个100层高的大厦,你手中有两个相同的玻璃围棋子。从这个大厦的某一层及更高的层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略(扔最少的次数),来得知那个临界层面。 2、如果大厦高度是N层…
(剑指Offer)面试题45:圆圈中最后剩下的数字
题目: 0,1,…n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字,求出这个圆圈里剩下的最后一个数字。 思路: 1、环形链表模拟圆圈 创建一个n个节点的环形链表,然后每次在这个链表中删…
(算法)交错的字符串
题目: 给定三个字符串A, B, C,判断C是否由A和B交错构成。交错构成的意思是,对于字符串C,可以将其每个字符标记为A类或B类,使得我A类的每个字符顺序构成了A字符串,B类的每个字符顺序构成了B字符串。如:对于A=”…
(算法)变成1需要的最小步数
题目: 假设有如下操作,偶数则除以2,奇数可以加1或减1,那么问给定某个数,让它变成1需要的最少操作是多少步? 思路: 1、动态规划: 递推方程: if n&1==1 dp[n]=min(dp[n-1…
(剑指Offer)面试题43:n个骰子的点数
题目: 把n个骰子仍在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 思路: s可能出现的值的范围为:n–6*n 1、全排列 回溯法枚举n个骰子(6面)的全排列,然后计算每一…
(算法)最大子数组和以及最大子矩阵和
题目: 1、给定一数组,求该数组的最大子数组和; 2、给定一矩阵,求该矩阵的最大子矩阵和; 思路: 1、求数组的最大子数组和很简单,可以通过动态规划来实现,假设数组为arr: 假设dp[i]表示从0到i的数组的最大子数组…
(剑指Offer)面试题39:二叉树的深度
题目: 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 结点的定义如下: struct TreeNode{ int val; TreeNode* …
(算法)跳格子
题目: 有1,2,3,……无穷个格子,你从1号格子出发,每次1/2概率向前跳一格,1/2概率向前跳两格,走到格子编号为4的倍数时结束,结束时期望走的步数为____。 思路: 1、MonteCarl…
(剑指Offer)面试题32:从1到n整数中1出现的次数
题目: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,一共出现了5次。 思路: 1、累加法 累加1到n中每个整数1出现的次数。 求每…
(笔试题)路径走法
题目: 在如下8*6的矩阵中,请计算从A移动到B一共有____种走法。要求每次只能向上或向右移动一格,并且不能经过P。 456 492 568 626 680 702 思路: 1、组合数学 在8*6的矩阵,…