从面试问题中有效存储矩阵

时间:2014-02-11 21:34:11

标签: matrix storage

我接受了几次采访,其中一些人失败了。 实际上有三个不同的公司提出了一个问题。不完全相同,但它们有共同的结构。

问题是:现在你有一个0或1的矩阵(或者有用的用户配置文件用“1”表示,无用的用“0”表示,或者用1和0值表示的图像)。现在您需要将图像有效地存储到系统中。你应该用什么方法?

在我看来,他们期待我提出有效的解决方案,所以我告诉他们一起使用0,1和“价值”。 例如。 00000011100011111 可存储为06 13 03 15 我知道在多媒体或信息技术中有类似的编码方法。 但我认为这不是他们想要的。

想法?

感谢!

1 个答案:

答案 0 :(得分:0)

这取决于“高效”的含义。

空间和效率之间的妥协妥协是选择比问题数量略大的原生数据类型。

如果你想为每个项目/人存储10个不同的二进制值,请使用short(或者这就是java中调用的16位数据类型)。

如果将它们存储在一个数组(short[])中,你可以很快地通过它的id找到项目/人物,用作数组中的位置,然后使用{{3}找到某个值(在这种情况下,将1比特移位到存储感兴趣项的位置,然后使用按位运算&(和)来获取此特定位。如果得到的短{{1}你知道那个位已经确定了。