由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - google 面试题
相关主题
microsoft phone interview round 1一道老题
google面试题回馈C++ template
一个facebook面试题C++ Q42: (C22)
电话面试题一问Mathworks is hiring! job #10319 - C++ Developer – Compile
请教一个面试题Compiler/C++ position @Mathworks
算法--一个MXN matrix (0's and 1's)内求最大 rectangle(1's)面试题
求一道 面世题 的解答思路问一道c++面试题
矩阵置0题问一个java的面试题
相关话题的讨论汇总
话题: submatrix话题: 矩阵话题: matrix话题: maximum话题: 0000100
进入JobHunting版参与讨论
1 (共1页)
t******i
发帖数: 32
1
n*n 矩阵, 元素包括0 和1
求size(面积)最大的全1子矩阵.
想不出来,求教大家.
w****l
发帖数: 88
2
什么时候的题啊?今天问你的么?(解法改天上来....)
a***9
发帖数: 364
3
divide and conqure?

【在 t******i 的大作中提到】
: n*n 矩阵, 元素包括0 和1
: 求size(面积)最大的全1子矩阵.
: 想不出来,求教大家.

t******i
发帖数: 32
4
今天面的, 感觉挂了...

【在 t******i 的大作中提到】
: n*n 矩阵, 元素包括0 和1
: 求size(面积)最大的全1子矩阵.
: 想不出来,求教大家.

g*******y
发帖数: 1930
5
comfort,遇到刁难你的了,这个题目属于面试题里面最高的难度级别
a***9
发帖数: 364
6
布个道吧 只能想到用分治,分4块再围着中间十字架找,大概是O(n^2),估计错的

【在 g*******y 的大作中提到】
: comfort,遇到刁难你的了,这个题目属于面试题里面最高的难度级别
I**********s
发帖数: 441
7
如果是正方形子矩阵, 答案见http://geeksforgeeks.org/?p=6257
属于DP, 时空复杂度都是O(n*n).
如果可以是长宽不等的子矩阵, 需要进一步考虑.
i**********e
发帖数: 1145
8
这题最优解可以O(n^2)。。。
要在面试时想出来的确有点难度。
以下两个链接有详细解法,欢迎大家踊跃讨论
http://www.drdobbs.com/184410529
http://www.seas.gwu.edu/~simhaweb/cs151/lectures/module6/module6.html
h**6
发帖数: 4160
9
我的解法是这样的,需要五个辅助矩阵: H, L, Lx, R, Rx, 大小都为n*m,与原矩阵X
相等。
H中记录当前点向上连续1的个数,或者称为当前最高一字柱的高度。
L中记录当前点向左连续1的个数。
Lx中记录当前最高一字柱向左最远延伸到的位置。
R中记录当前点向右连续1的个数。
Rx中记录当前最高一字柱向右最远延伸到的位置。
最后再遍历一遍,求出每个点对应当前最高一字柱向左右延拓的面积,最大值就是最大
矩形面积。
S = H(Rx-Lx+1)
优化方法:
第一次遍历可以求出H, L, Lx
第二次遍历可以求出R, Rx, S
每个矩阵只需要保留当前行和上一行,复杂度是O(2m)*5 = O(10m)
r**********1
发帖数: 292
10
挺好的。

【在 i**********e 的大作中提到】
: 这题最优解可以O(n^2)。。。
: 要在面试时想出来的确有点难度。
: 以下两个链接有详细解法,欢迎大家踊跃讨论
: http://www.drdobbs.com/184410529
: http://www.seas.gwu.edu/~simhaweb/cs151/lectures/module6/module6.html

相关主题
算法--一个MXN matrix (0's and 1's)内求最大 rectangle(1's)一道老题
求一道 面世题 的解答思路C++ template
矩阵置0题C++ Q42: (C22)
进入JobHunting版参与讨论
r**********1
发帖数: 292
11
不错啊。

【在 I**********s 的大作中提到】
: 如果是正方形子矩阵, 答案见http://geeksforgeeks.org/?p=6257
: 属于DP, 时空复杂度都是O(n*n).
: 如果可以是长宽不等的子矩阵, 需要进一步考虑.

b******n
发帖数: 823
12
辅助matrix A,原始matrix R
A[i][j]存 R[1][j]+...+R[i][j],即该column从0到i为止的和
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*********应为R[k][j]+...+R[i][j],k-i是连续的1****
然后扫描每个row,row上的值实际构成一个histogram,求该histogram内最大的rectangle,O(N)
总体O(MN)
不知对不。。。
l********k
发帖数: 613
13
这个是不对的,R[1][j]+...+R[i][j],加起来的和不代表连续的1啊,当中会有0。

rectangle

【在 b******n 的大作中提到】
: 辅助matrix A,原始matrix R
: A[i][j]存 R[1][j]+...+R[i][j],即该column从0到i为止的和
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: *********应为R[k][j]+...+R[i][j],k-i是连续的1****
: 然后扫描每个row,row上的值实际构成一个histogram,求该histogram内最大的rectangle,O(N)
: 总体O(MN)
: 不知对不。。。

b******n
发帖数: 823
14
恩,改成R[k][j]+...+R[i][j],k-i是连续的1

【在 l********k 的大作中提到】
: 这个是不对的,R[1][j]+...+R[i][j],加起来的和不代表连续的1啊,当中会有0。
:
: rectangle

c***p
发帖数: 221
15
这个题是 largest rectangle under a histogram 的延伸。作为面试题是有点过分了。

【在 g*******y 的大作中提到】
: comfort,遇到刁难你的了,这个题目属于面试题里面最高的难度级别
j**l
发帖数: 2911
16
开始没看到,原来子矩阵是方的,这个难度降低了不少阿。
不过就是这样也不是一下子想到
0 1 1 0 1
1 1 0 1 0
0 1 0 1 0
1 1 1 1 0
1 1 1 1 1
0 0 0 0 0
方的话那个算法找到
1 1
1 1
不方的话应该是
1 1 1 1
1 1 1 1
那个算法无能为力

【在 I**********s 的大作中提到】
: 如果是正方形子矩阵, 答案见http://geeksforgeeks.org/?p=6257
: 属于DP, 时空复杂度都是O(n*n).
: 如果可以是长宽不等的子矩阵, 需要进一步考虑.

j**l
发帖数: 2911
17
就和哥德巴赫猜想或者费马大定理一样,题目描述很简单,可是找到解法很难
c****l
发帖数: 1280
18
makr
l******l
发帖数: 497
19
能不能产生一个新的矩阵,然后矩阵的每个元素是数组。数组的第一个元素计算同一行
向左有多少个连续的1,第二个元素计算同一列向上有有多少个连续的1。
产生矩阵之后,每个数组取积。
非cs专业,所以瞎猜的,轻拍
s*****e
发帖数: 36
20
Is my idea right? (Not CS major, welcome to make some comments)
Use a matrix A[i,j] to remember the size of all-1 matrix whose right-end
corner is (i,j) in the given matrix B.
if B[i,j]=0, A[i,j]=0
else
if A[i-1,j],A[i,j-1], A[i-1,j-1] are all >0
A[i,j]=A[i-1,j]+A[i,j-1]-A[i-1,j-1]+1
else
if A[i-1,j-1]==0 && (A[i-1,j]>0 || A[i,j-1]>0)
A[i,j]=max(A[i-1,j],A[i,j-1])+1
else
if A[i-1,j-1]==0 && A[i-1,j]=0 && A[i,j-1]=0
A[i,j]=1
else


【在 t******i 的大作中提到】
: n*n 矩阵, 元素包括0 和1
: 求size(面积)最大的全1子矩阵.
: 想不出来,求教大家.

相关主题
Mathworks is hiring! job #10319 - C++ Developer – Compile问一道c++面试题
Compiler/C++ position @Mathworks问一个java的面试题
面试题virtual table存在memory的哪块啊?
进入JobHunting版参与讨论
s*****e
发帖数: 36
21
Found erros in my previous solution. It seems I should remember the sizes
for three directions: horizontal, vertical, and rectangular and then
establish the recursive relation. The above is not right.

【在 s*****e 的大作中提到】
: Is my idea right? (Not CS major, welcome to make some comments)
: Use a matrix A[i,j] to remember the size of all-1 matrix whose right-end
: corner is (i,j) in the given matrix B.
: if B[i,j]=0, A[i,j]=0
: else
: if A[i-1,j],A[i,j-1], A[i-1,j-1] are all >0
: A[i,j]=A[i-1,j]+A[i,j-1]-A[i-1,j-1]+1
: else
: if A[i-1,j-1]==0 && (A[i-1,j]>0 || A[i,j-1]>0)
: A[i,j]=max(A[i-1,j],A[i,j-1])+1

p********7
发帖数: 549
22
我觉得这个办法很好,histogram做一次O(N)每行都做O(M*N)

【在 b******n 的大作中提到】
: 恩,改成R[k][j]+...+R[i][j],k-i是连续的1
y****n
发帖数: 579
23


【在 p********7 的大作中提到】
: 我觉得这个办法很好,histogram做一次O(N)每行都做O(M*N)
s****a
发帖数: 528
24
没有看那些网站,自己想出来的
用另外一个矩阵B表示原矩阵A,元素值B(i,j)是原矩阵位置到左上角子矩阵的1的数目。
那么判断A(i0,j0)->A(i1,j1) 是不是全一子矩阵就可以从 B(i1,j1)+B(i0,j0)-B(i1,
j0)-B(i0,j1)
得知 O(1)
From now on, we can do dynamic programming:
assume we found the maximum sub matrix for A(1,1) -> A(i,j),
we save the maximum submatrix which has the right-bottom corner at A(i,j_k),
and A(i_k,j), and maximum submatrix without limitation
go to A(i,j+1), A(i+1,j)
p********7
发帖数: 549
25
老题目了,就是用求histogram最大面积的方法做。
i*******t
发帖数: 79
26
面试给多长时间啊?

【在 t******i 的大作中提到】
: n*n 矩阵, 元素包括0 和1
: 求size(面积)最大的全1子矩阵.
: 想不出来,求教大家.

c***z
发帖数: 6348
27
方阵的话用Dynamic Programming
/**************************************************************
Maximum all-0 square submatrix problem -- Compiled under VC++ 2008.
Problem Description:
Given MxN binary matrix M, find the maximum all 0 square submatrix (
denoted by MASS) of it.
Example:
0000100
1100100
0000011 <= an answer is the 3x3 submatrix (row 2~4, col 0~2)
0000010
0000100
0010100
Algorithm Description:
The key idea is Dynamic Programming. Assume we are going

【在 t******i 的大作中提到】
: n*n 矩阵, 元素包括0 和1
: 求size(面积)最大的全1子矩阵.
: 想不出来,求教大家.

c***z
发帖数: 6348
28
我最后做出来了,也被默拒了。MSFT
不过是第二天做出来的。。。
总之就是再无消息。
c***z
发帖数: 6348
29

非方阵的我也做出来了,可是还是没有用。从此以后我就没有信心了。。。
/**************************************************************
Maximum All-0 Submatrix Problem (not necessarily square submatrix)
-- compiled under VC++ 2008
Problem Description:
Given MxN binary matrix R, find the maximum all 0 submatrix (not
necessarily square submatrix, denoted by MAS) of it.
Example:
0000100
1100100
0000011 <= an answer is the 2x5 submatrix (row 0~4, col 2~3)
1000010
0000100
001010

【在 I**********s 的大作中提到】
: 如果是正方形子矩阵, 答案见http://geeksforgeeks.org/?p=6257
: 属于DP, 时空复杂度都是O(n*n).
: 如果可以是长宽不等的子矩阵, 需要进一步考虑.

1 (共1页)
进入JobHunting版参与讨论
相关主题
问一个java的面试题请教一个面试题
virtual table存在memory的哪块啊?算法--一个MXN matrix (0's and 1's)内求最大 rectangle(1's)
Bloomberg(financial software developer)第一轮面试求一道 面世题 的解答思路
Q in C/C++矩阵置0题
microsoft phone interview round 1一道老题
google面试题回馈C++ template
一个facebook面试题C++ Q42: (C22)
电话面试题一问Mathworks is hiring! job #10319 - C++ Developer – Compile
相关话题的讨论汇总
话题: submatrix话题: 矩阵话题: matrix话题: maximum话题: 0000100