Формат | Размер | Скачать |
---|
Название | : | |
Продолжительность | : | |
Пользователь | : | id 842678501598 |
Дата публикации | : | ript src= |
Просмотры | : | layer\/3b96d06c\/www-embed-player.vflset\/www-embed-player.js |
Понравилось | : | 537 |
Не понравилось | : | 26 |
大家不要眨眼睛--哈哈!花花太可爱啦。讲得太好了! Комментарий от : @goodhabits1805 |
最後一個想法超簡單,居然沒想過... Комментарий от : @sai280557071 |
最后一个太妙了! Комментарий от : @zhihangxin886 |
为什么没声音啊 Комментарий от : @zz9364 |
啊python第一种方法超时了。。。。 Комментарий от : @ldy6621 |
请教花花,rangesum的计算中,-1操作所表示含义能再解释一下么? Комментарий от : @lingyikong1835 |
花花我有个问题, 同样的算法用cpp为什么就能通过,我用python2写一遍就会超时呢? 以下是我的代码,期待你的帮助。 class Solution(object): def maxSideLength(self, mat, threshold): """ :type mat: List[List[int]] :type threshold: int :rtype: int """ m, n = len(mat), len(mat[0]) dp = [[0]*(n+1) for r in xrange(m+1)] for x in xrange(1, n+1): for y in xrange(1, m+1): dp[y][x] = dp[y-1][x] + dp[y][x-1] - dp[y-1][x-1] + mat[y-1][x-1] def area(x1, y1, x2, y2): return dp[y2][x2] - dp[y2][x1-1] - dp[y1-1][x2] + dp[y1-1][x1-1] ans = 0 for y in xrange(1, m+1): for x in xrange(1, n+1): k = 0 while k+y <= m and k+x<=n: if area(x, y, x+k, y+k) > threshold: break ans = max(ans, k+1) k += 1 return ans Комментарий от : @j.c9858 |
感謝花花,這題我本來是用暴力法解的,因為有稍微過濾一下條件,所以有Accepted。 現在看了DP解法,試著自己寫一次,也見識到了DP的強大之處。 Комментарий от : @jimmyliao6429 |
还可以接收到视频更新通知邮件 👍🏻 Комментарий от : @user-yr8nk4io1u |
多謝hua hua分享, 第三種有學習到 Комментарий от : @pohsunhuang9283 |
花花,blog中视频没放。第一种和第三种方法的Java运行时间都比居然C++快 Комментарий от : @jasonswift7468 |
希望可以讲下850,nlogn的那种,对于怎么更新每一段的长度有点疑惑 Комментарий от : @liweigao4755 |
更正:最后一种方法把break换成continue时间复杂度变为O(n*m*min(n,m)). Комментарий от : @HuaHuaLeetCode |