03 2022 档案
摘要:跳跃游戏 题目:跳跃游戏 《程序员代码面试指南》第74题 P247 难度:士★☆☆☆ 这题在左神的书上是最简单的“士”难度,不过在力扣上起码是中等难度(力扣上跳跃游戏从I到VII,有中等有困难),自己做起来感觉不是特别简单,稍微想了一会儿。 书中具体过程如下: 定义整型变量jump,代表目前跳了多少
阅读全文
摘要:数组中的最长连续序列 题目:数组中的最长连续子序列 《程序员代码面试指南》第75题 P248 难度:尉★★☆☆ 这题我一上来想到先排序再找最长序列,不过就算使用最快的排序算法,时间复杂度也达到了O(NlogN),不符合题目要求的O(N)。 介绍两种解法: 首先是书中使用哈希表的解法: 生成哈希表ma
阅读全文
摘要:数字字符串转换为字母组合的种数 题目:数字字符转化为字母组合的种数 《程序员代码面试指南》第71题 P238 难度:尉★★☆☆ 这题不算很难,很快想出来,一个for循环了事,不过有些难理解。 我的思路是,假设数字字符串为“XXX...XXX”,那么“XXX...XXX”转换为字母组合的总数(记为p(
阅读全文
摘要:最小编辑代价 题目:最小编辑代价 《程序员代码面试指南》第68题 P230 难度:校★★★☆ 同样分为经典动态规划和经典动态规划结合空间压缩两种方法。 经典动态规划方法: 同样建立二维动态规划表,大小为(M+1)×(N+1)的矩阵dp,dp[i][j]的值代表str1[0..i-1]编辑成str2[
阅读全文
摘要:最长公共子序列问题 题目:最长公共子序列 《程序员代码面试指南》第65题 P220 难度:尉★★☆☆ 本题是非常经典的动态规划问题,先来介绍求解动态规划表的过程。如果str1的长度为M,str2的长度为N,生成大小为M×N的矩阵dp。dp[i][j]的含义是str1[0..i]与str2[0..j]
阅读全文
摘要:最长递增子序列 题目:最长递增子序列 《程序员代码面试指南》第62题 P210 难度:校★★★☆ 首先是时间复杂度为O(N2)的方法。 生成长度为N的数组dp,dp表示在以arr[i]这个数结尾的情况下,arr[0..i]中的最大递增子序列长度。 对第一个数arr[0]来说,令dp[0]=1,接下来
阅读全文
摘要:机器人达到指定位置方法数 题目:机器人达到指定位置方法数 《程序员代码面试指南》第59题 P192 难度:尉★★☆☆ 书上题目顺序安排极不合理,这题应该放在上一题的前面。上一题没做出来,大致看了下解析,对这题有一定启发,很快想出来了。 主要介绍一下本题提出的“用暴力递归解决的方法如何优化成动态规划”
阅读全文