摘要:
题解 Medium 方法:动态规划 左边 k 个数连续求和,右边倒数 k 个数连续求和。然后,两个数组收尾相加,就是 k 次首、尾抽牌的所有组合。 class Solution { public: int maxScore(vector<int>& cardPoints, int k) { vect 阅读全文
摘要:
题解 Hard 方法一:动态规划 取每个位置的最大高度 Maximum Height at Each Point 这道题与84题联系在一起看,完全可以转化成84题的样子。对于每一行,只看其以上的数组元素,把连续的值为1的格子累加起来,就变成 histogram 了。 那么,在每一个值为1的坐标位置上 阅读全文
摘要:
题解 Hard 动态规划 这道题是一道很具有代表性的二维动态规划问题,非常具有示范效应,理解了这道题的思路,能够举一反三。 一开始没有思路的时候,用一个小例子手动演算一下很有帮助。 Example: word1: abc, word2: abbc \0 a b b c \0 0 1 2 3 4 a 阅读全文
摘要:
题解 Hard Sliding Window 事实证明,掌握套路还是很有用的。用 sliding window 模板套路解决这道题还是比较顺利的,虽然是一道 Hard 级别的题。当然,有一点冗余,可以精简一下。 class Solution { public: int lengthOfLongest 阅读全文
摘要:
题解 Medium BFS Tree 是一种特殊的 Graph,节点之间只有一个方向。而这里有从 Target 节点向各个方向,包括父节点方向,遍历的需求。所以利用 Hashmap 先转化成一个无向图。 /** * Definition for a binary tree node. * struc 阅读全文
摘要:
题解 Medium 动态规划 class Solution { public: bool wordBreak(string s, vector<string>& wordDict) { // a + b = s // as long as a true and b true, then s true 阅读全文
摘要:
题解 Medium Dynamic Programming 顺利做出来了。说明还是理解了coin的组合方式的。动态规划问题,很多都是排列组合问题的应用。 class Solution { public: int coinChange(vector<int>& coins, int amount) { 阅读全文