查看: 3039| 回复: 3
跳转到指定楼层
上一主题 下一主题
收起左侧

[高频题] 求解下 Dropbox Sharpness value 的解法

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 nickNNN 于 2021-8-30 23:48 编辑

粘贴下另一个帖子里的描述:https://www.1point3acres.com/bbs/thread-231002-1-1.html

输入一个 2-D array,比如说是:
4    5    4    0    1    2
5    6    5    0    0    0
0    0    0    0    0    0
1    3    1    2    3    3
3    0    3    0    0    0

从最左一列中的任意一个出发,到达最右一列的任意一个,要求:
1)当前格子要想往右走,只能往右上、右边、右下三个格子移动;
2)一条path中最小的那个值才是这条path的合格value;
3)在所有path中找到合格value最大的那一条,输出它的value。

比如给的上面这个例子中,我把最后的path标出来了:3->3->3->2->3->3,所以最终结果就应该返回2。
而比如第一行的path:4->5->4->0->1->2,合格value应该是0,所以不是最终结果。

DP 公式:
  1. dp[i][j] = min(max(dp[i-1][j-1], dp[j-1], dp[i+1][j-1]), grid[i][j])
复制代码
[i][i]
我理解是看(i)(j) [i]的右边三个点,但是min 和 max 这里怎么解释呢?谢谢。

下面是完整题目:




[/i][/i][/i]

上一篇:文科转码选前端还是后端
下一篇:请问八月的leetcode daily challenge有工资发吗?
全局:
union find 好像也可以做
回复

使用道具 举报

全局:
就是经典的dp吧
假设v[i][j]是原始值,p[i][j]是每一个点的max path value

第一列init,p值就是v值
从左向右扫描,每一个点有最多3个path,每个path的value是min(p[i-1][k], v[i][j]),k=j-1,j, j+1,注意检查边界
p[i][j]就是上面3个path里面最大的那个
最后统计最右边那行的最大p
回复

使用道具 举报

🔗
 楼主| nickNNN 2021-9-1 14:46:12 | 只看该作者
全局:
谢谢楼上的回答。自己又想了下,主要是不理解为什么 先取 max 再取 min。想通了,下面是我的推理思路:


评分

参与人数 1大米 +5 收起 理由
14417335 + 5 给你点个赞!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表