Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

第一周刷题经验总结028 #75

Open
Jerrydreamaker opened this issue Jun 9, 2019 · 0 comments
Open

第一周刷题经验总结028 #75

Jerrydreamaker opened this issue Jun 9, 2019 · 0 comments

Comments

@Jerrydreamaker
Copy link
Contributor

首先抱歉,好像有点晚了,向明天没精神工作的自己,公司和各位小伙伴。本周刷题重点突破了递归和 DP 两个点。

分别是 174 号的 dungeonGame 问题。哈哈哈,这题看这矩阵造型,求最优,必然是 DP 问题。接下来的问题是如何定义状态转移方程,哈哈,也很简单,骑士在矩阵的的任何一点,可以先下或向右移动,所以 i+1 ,或 j+1,然后选取两个的最小值。即 f(i,j)=max(1,min(f(i,j+1)-nums[i][j+1],f(i+1,j)-nums[i+1][j]))。如果骑士在边缘,则只能向下或向右。在调试过程中,记录骑士最开始并非是在 (0,0)可以想象成骑士在矩阵外,调到 (0,0)则减去 (0,0)处的矩阵值,其他同理。

然后就是 236 号的 lowest common ancestor 问题。说实话,问题是递归过程对递归函数的定义容易犯糊涂。
定义 find 函数:功能如下,在当前树下,找到左右子树找到的第一个 p 或者 q,如果没有则返回 null。如果左右都不为 null。则当前节点为最近父节点,退出递归,并且使用全局变量记录。如果一边为 null,则最近在另外一边。

其他问题:42 rain water 问题除了老师课堂上的解法。我自己构思了方法2:即找到数组中的最大值和第二大值,计算出其之间的雨水面积,等于 最低*宽度-中间元素高度之和。然后对左右数组进行递归。哈哈,下周一定实现。此处 flag。

接下啦是 同类型的条形图面积问题,想通了暴力解和如果不是最后以为,并且后面一位比其高,则放弃计算当前值。和使用minIndex 记录当前值往前的数组中的最小值,minIndex 前的数字使用 minIndex 一次计算。

额,之所以现在交作业,主要卡在一道自以为很简单的问题上。将数组向后移动 k 位。目前想法无法解决 k 大于数组长度问题。待突破。

其他软柿子就不提了哈。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant