题目 例:arr=[2,1,5,3,6,4,8,9,7] ,最长递增子序列为1,3,4,8,9 题解 step1:找最长连续子序列长度 dp[]存以arr[i]结尾的情况下,arr[0..i]中的最长递增子序列的长度. 额外加一个ends[]数组,初始化ends[0]=arr[0],其他为0.有一个有效区ends[0,r],只有有效区内的数才有意义.ends[i]=num表示遍历到目前,所有长度i+1的递增序列中,结尾最小的数时num. 遍历arr[i]时,在ends有效区找最左边>=arr[i…
问题描述 字符串str,模式串exp. 必须保证str中无'.'和'星号'字符,并且exp中'星号'不出现在首位,且无连续两个'星号'.PS星号是字符只是暂时没找到markdown的星号转义字符. '.'可以匹配任意一个字符,'星号'可以匹配0-多个星号前面的一个字符的情况. 输出可否匹配. 例: str="abc",exp="a.c" ,true str="abc",exp=".星号",true str="&quo…
原文链接 这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现.针对当前程序员面试缺乏权威题目汇总这一痛点,本书选取将近200道真实出现过的经典代码面试题,帮助广大程序员的面试准备做到万无一失.“刷”完本书后,你就是“题王”!__eol__本书采用题目+解答的方式组织内容,并把面试题类型相近或者解法相近的题目尽量放在一起,读者在学习本书时很容易看出面试题解法之间的联系,使知识的学习避免碎片化.书中将所有的面试题从难到易依次分为“将.校.尉.士”四个档次,…
  第1章栈和队列 1设计一个有getMin功能的栈(士★☆☆☆) 1由两个栈组成的队列(尉★★☆☆) 5如何仅用递归函数和栈操作逆序一个栈(尉★★☆☆) 8猫狗队列(士★☆☆☆)10用一个栈实现另一个栈的排序(士★☆☆☆) 13用栈来求解汉诺塔问题(校★★★☆) 14生成窗口最大值数组(尉★★☆☆) 19构造数组的MaxTree(校★★★☆) 22求最大子矩阵的大小(校★★★☆) 26最大值减去最小值小于或等于num的子数组数量(校★★★☆) 31第2章链表问题34打印两个有序链表的公共部分(…
问题描述 如题. 例:输入两个字符串 str1="1AB234",str2="1234EF" ,应输出最长公共子串"234". 解题思路 状态表示 dp[i][j]表示把str1[I]和str2[j]作为公共子串的最后一个字符,最长公共子串的长度. 最终,找到dp数组中的最大值及其位置,则可计算并获得最长子串. 状态转移方程 dp[i][j]=dp[i-1][j-1]+1 ,(str[i]==str[j]) dp[i][j]=0,(str[I]!…
问题描述 输入 原字符串StrOrg,目标字符串StrTarget,插入.删除.替换的编辑代价ic,dc,rc.输出将原字符串编辑成目标字符串的最小代价. 解题思路 状态表示 dp[i][j]表示把strOrg[0:i]编辑成strTarget[0:j]的最小代价. 状态转移方程 从以下三种状态的取最小即可: 删除:dp[i][j]=dp[i-1][j]+dc.原串删除最后一个元素,再转移到目标串 插入:dp[i][j]=dp[i][j-1]+ic.原串变为目标元素删除最后一个元素,再插入最后一…
题目 给定两个有序数组arr1和arr2,再给定一个整数k,返回所有的数中第k小的数. 题解 利用题目"在两个长度相等的排序数组中找到第上中位数"的函数 分类讨论 k < 1 || k > lenShort + lenLong,无. k <= lenShort,在两个数组前k个做二分. k > lenLong,判断两个特例位置(特例部分是因为好计算可直接返回结果,并且抛去特例可满足两数组剩余待二分部份长度相等的条件),否则二分. lenShort<k<…
题目链接 https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf?tpId=13&tqId=11182&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述 从无序序列,找到最小topk个元素. 解题思路 使用大根堆维护最小topk个元素: - 首先前k个元素建立大根堆(从…
题目 给定整数数组arr和整数num,共返回多少的数组满足如下情况 max(arr[i...j]) - min(arr[i...j]) <= num max(arr[i...j])表示数组arr[i...j] 中最大值,min(arr[i...j])表示数组arr[i...j] 中最小值 java代码 /** * @Description:最大值减去最小值小于或等于num的数量 * @Author: lizhouwei * @CreateDate: 2018/4/6 0:55 * @Modify…
题目 给出一个无重复元素的数组,构造此数组的MaxTree, java代码 /** * @Description: 构造数组的MaxTree * @Author: lizhouwei * @CreateDate: 2018/4/5 22:16 * @Modify by: * @ModifyDate: */ public class Chapter1_8 { public Node getMaxTree(int[] arr) { if (arr == null) { return null; }…