10.28 - 九章高级算法班题目大总结(5,6课)

课程5: dp问题1,滚动数组优化,博弈类,记忆化搜索

Longest Increasing Continuous Subsequence:左边找一下,右边找一下

Maximum Subarray:好像用不到动态规划

Maximal Square:square利用边的性质来做递推

Longest Palindromic Substring:好像直接扩张就可以了,也用不上动态规划

Coins in a Line II:博弈类问题,直接只考虑一个人的就好

Coins in a Line:和上面那题一样

House Robber:简单的dp

Maximum Product Subarray:简单的dp

Longest Increasing Subsequence:LIS,经典的dp

Longest Increasing Continuous Subsequence II:滑雪道问题,状态为以某个点为终点的最长递减路径,用记忆化搜索来做

Maximal Square II:和1很相似

课程6: dp问题2,区间dp,背包问题,双串比较

Scramble String: 算是记忆化搜索类吧

Longest Common Subsequence:简单的二重匹配

Edit Distance:同样简单的二重匹配

终点复习背包问题1,2,3,4,5,6

Distinct Subsequences:挺直观的双链匹配

Interleaving String:也算是挺简单的一道

Minimum Adjustment Cost: D[i][v]: 把index = i的值修改为v,所需要的最小花费,也就是i-1个值调整到j,然后把i位调整到k时候的最小花费

Burst Balloons:区间dp,和下面那题是一样的,都先找到分割点,然后用记忆化搜索来做

Stone Game :区间dp,找到分割点,也就是当合并ij的时候,以k为断点,也就是合并ik,合并k+1~j然后再把这两个合并起来,有些记忆化搜索的意思

Maximal Square II:和maximal square 很类似只是判定条件变了一点点

Post Office Problem:dp[i][l]=dp[j][l-1] + dis[j+1][i] (l-1<=j<i)。其中dp[i][l]表示在前i个村庄中建l个post的最短距离,j为分隔点,可以将问题转化为在前j个村庄建l-1个post的最短距离+在第j+1到第i个村庄建1个post的最短距离。其中有个性质,如元素是单调排列的,则在中间位置到各个元素的距离和最小。

k sum: 用三维动态规划。ksum[i][j][l]表示前j个元素里面取l个元素之和为i。
初始化:ksum[0][j][0] =1(j:0~n),即前j个元素里面取0个元素使其和为0的方法只有1种,那就是什么都不取 ksum[i][j][l]=ksum[i][j-1][l]+ksum[i-A[i-1]][j-1][l-1]

Best Time to Buy and Sell Stock IV:dp[i][j] 对前j个元素进行最多i次transactions获取的最大值

K Edit Distance: 实在是太麻烦了,还有那题等Google面试完再看吧,真是太复杂了

copy books II: 可以用dp也可以用二分法,不过我已经看不下去了,休息一下

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 11,447评论 0 33
  • 326. Power of Three Given an integer, write a function to...
    跑者小越阅读 1,737评论 0 1
  • 前言 文理兼修才是王道。 本文纯属个人观点,来源一律个人经验,所提无非个人建议。 如标题所示,本文重点在于方法论、...
    破谷阅读 933评论 2 3
  • 在某些环境条件下专制式的领导者工作效率高,而在另一些环境中民主型的领导者工作起来得心应手。在 任何一种环境中我们...
    夏一喵阅读 425评论 0 0
  • 今天的文章让我们重新理解了“习惯”,这个概念。概念真的很重要,李笑来老师曾说:判断一个人是否聪明,就是看他脑子里有...
    杨荣鹏阅读 37评论 0 2