题目: 输入字符串中对称的子字符串的最大长度。比如输入字符串“roorle”,由于该字符串里最长的对称子字符串是“roor”,因此输出4. 思路: 1、求字符串”roorle“和反序”elroor“的最长公共子串 2、最…
分类:动态规划
(算法)扔棋子
题目: 1、有一个100层高的大厦,你手中有两个相同的玻璃围棋子。从这个大厦的某一层及更高的层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略(扔最少的次数),来得知那个临界层面。 2、如果大厦高度是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…
(算法)最大子数组和以及最大子矩阵和
题目: 1、给定一数组,求该数组的最大子数组和; 2、给定一矩阵,求该矩阵的最大子矩阵和; 思路: 1、求数组的最大子数组和很简单,可以通过动态规划来实现,假设数组为arr: 假设dp[i]表示从0到i的数组的最大子数组…
(算法)跳格子
题目: 有1,2,3,……无穷个格子,你从1号格子出发,每次1/2概率向前跳一格,1/2概率向前跳两格,走到格子编号为4的倍数时结束,结束时期望走的步数为____。 思路: 1、MonteCarl…
(笔试题)路径走法
题目: 在如下8*6的矩阵中,请计算从A移动到B一共有____种走法。要求每次只能向上或向右移动一格,并且不能经过P。 456 492 568 626 680 702 思路: 1、组合数学 在8*6的矩阵,…
(算法)宝石升级问题
题目: 有一块宝石,1级升2级成功率100%,2级升3级成功率80%,3级升4级成功率60%,4级升5级成功率40%,每次升级失败时降回到1级。请问一块1级宝石升到5级平均要多少次? 思路: 问题:求一块1级…
(算法)最长回文子串
题目: 求一个字符串的最长回文子串 思路: 1、暴力枚举 最容易想到的就是暴力破解,列举每一个子串,然后根据回文的定义判断是不是回文,找到最长的那个。 求每一个子串的时间复杂度为O(N^2),判断子串是不是回文的时间复杂…
(算法)最长递增子序列
问题: Given an array of N integer, find the length of the longest increasing subsequence. For example, given [1,…
(剑指Offer)面试题45:圆圈中最后剩下的数字
题目: 0,1,…n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字,求出这个圆圈里剩下的最后一个数字。 思路: 1、环形链表模拟圆圈 创建一个n个节点的环形链表,然后每次在这个链表中删…
(剑指Offer)面试题43:n个骰子的点数
题目: 把n个骰子仍在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 思路: s可能出现的值的范围为:n–6*n 1、全排列 回溯法枚举n个骰子(6面)的全排列,然后计算每一…