摘要:
原题链接 题意: 给定一个值,求出从树顶到某个叶(没有子节点)有没有一条路径等于该值。 思路: DFS Runtime: 4 ms, faster than 100.00% of C++ 阅读全文
摘要:
原题链接 题意: 给定一个数组数字,有一个大小为k的滑动窗口,它从数组的最左边移动到最右边。你只能在窗口看到k个数字。每次滑动窗口向右移动一个位置。 记录每一次窗口内的最大值,返回记录的值。 思路: 解法一: 一开始用的c++迭代器来模拟窗口,每移动一次就遍历一次找出最大值填入返回数组中。 效率非常 阅读全文
摘要:
原题链接 题意: 给一个非整数,算出其最少可以由几个完全平方数组成(1,4,9,16……) 思路: 可以得到一个状态转移方程 dp[i] = min(dp[i], dp[i - j * j] + 1); 代码如下: Runtime: 60 ms, faster than 69.83% 有点慢 cla 阅读全文
摘要:
原题链接 比子母题House Robber多了一个条件:偷了0以后,第n-1间房子不能偷。 转换思路为求偷盗【0,n-1)之间,以及【1,n)之间的最大值。 用两个DP,分别保存偷不偷第0间房的情况。 Runtime: 0 ms, faster than 100.00% 阅读全文
摘要:
原题链接 把字符串按照 ↓↗↓……的顺序,排列成一个 Z 形,返回 从左到右,按行读得的字符串。 思路: 建立一个二维数组来按行保存字符串。 按照 ↓↗↓……的方向进行对每一行加入字符。 太慢了这个解法,Runtime: 96 ms, faster than 3.61% of C++。 阅读全文
摘要:
https://leetcode.com/problems/house-robber/ 题意: 一维数组,相加不相邻的数组,返回最大的结果。 思路: 一开始思路就是DP,用一维数组保存dp[i]保存如果偷第i间,此时可偷到多少。DP的方向不太好,所以效率很低。 Runtime: 4 ms, fast 阅读全文
摘要:
原题层序遍历,从自底向上按层输出。 左→右→中解法一 :DFS,求出自顶向下的,最后返回时反转一下。class Solution{public: vector> res; vector> levelOrderBottom(TreeNode *root) ... 阅读全文
摘要:
原题链接题意:寻找配对的(),并且返回最长可成功配对长度。思路配对的()必须是连续的,比如()((),最长长度为2;()(),最长长度为4。解法一 dp:利用dp记录以s[i]为终点时,最长可配对长度。仅当遍历到s[i]==’)'的时候记录。dp[i]=dp... 阅读全文