一道面试题:寻找和值为k的子矩阵

bellbird 2011-10-22 10:56:19
给定一个mxn的矩阵,问是否有一个子矩阵,它的和等于k
...全文
351 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
gnefuil 2011-10-28
  • 打赏
  • 举报
回复
枚举上下两个行,每一列累加至一行上
从左到右扫描求部分和,对每个部分和s[i],通过hash判断s[i]-k是否已在hash中存在
这样O(min(m^2*n, n^2*m))
bellbird 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sasuke38 的回复:]

求高人写出代码 我就可以收藏了
[/Quote]
不一定要代码,有思路就行,我承认我是菜鸟,只提到动态规划这四个字我还是想不出来怎么做
Jobernowl 2011-10-27
  • 打赏
  • 举报
回复
求高人写出代码 我就可以收藏了
luberry 2011-10-27
  • 打赏
  • 举报
回复
integral image + dynamic programming 吧
AndyZhang 2011-10-27
  • 打赏
  • 举报
回复
动态规划
超级大笨狼 2011-10-26
  • 打赏
  • 举报
回复
这个用类似线段树的结构,来存储,是不是可以做到对数级别?
绿色夹克衫 2011-10-26
  • 打赏
  • 举报
回复
只求1个的话,大概是m*n*min(m,n) * log(m*n)
绿色夹克衫 2011-10-26
  • 打赏
  • 举报
回复
解的数量最大为O((n*m)^2),所以求全解的话,不会低于这个复杂度。
showjim 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bellbird 的回复:]
引用 2 楼 sbwwkmyd 的回复:

只能想到O(m*n*min(m,n))时间复杂度的。
枚举min(m,n)^2种情况,然后双指针扫描max(m,n)。

怎么扫描,两个累积和么?矩阵元素不一定是正的
[/Quote]
不好意思,确实没有考虑负数的情况。
如果有负数的话,暂时只能想到O((n*m)^2)的时间复杂度的,DP也可以。
bellbird 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sbwwkmyd 的回复:]

只能想到O(m*n*min(m,n))时间复杂度的。
枚举min(m,n)^2种情况,然后双指针扫描max(m,n)。
[/Quote]
怎么扫描,两个累积和么?矩阵元素不一定是正的
showjim 2011-10-23
  • 打赏
  • 举报
回复
只能想到O(m*n*min(m,n))时间复杂度的。
枚举min(m,n)^2种情况,然后双指针扫描max(m,n)。
libralibra 2011-10-23
  • 打赏
  • 举报
回复
暴力?

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧