冷门 curai 面经(不会做,求大神帮忙看看题)

刚刚面了一个加州的start-up
看了一下team 感觉很多大牛, ceo 是 以前netflix 的 cpo
一个三哥面得,斯坦福的ML Engineer.
看下面题目。

你 被 给予 一个 k-dimensional matrix 和 一个 数组 containing the size of each dimension. 需要返回 matrix 的
提供一个interface去获得每个validate 数组里的元素。

public interface KDMatrix {
  int get(int[] dims);
}

e.g. M = [[[0, 1, 2], [3, 4, 5]], [[6, 7, 8], [9, 10, 11]]], dimensions = [2, 2, 3]
M.get([0, 0, 0]) = 0, M.get([1, 0, 1]) = 7
We want to return 66 in this case
matrixSum(M, [2, 2, 3]) = 66


M = [1, 2, 3], dimensions = [3]
matrixSum(M, [3]) = 6 = 1 + 2 + 3

M= [[1, 2, 3], [3, 4, 5],[5,6, 7]], dimensions = [3, 3]
matrixSum(M, [2, 2]) = 10
M.get([1, 9]) = 3, M.get([0]), M.get(0), M.get([0, 1, 1]) = invalid
M.get([0, 0]), M.get([0, 1]), M.get([1, 0]), M.get([1, 1])

面试45分钟,前15分钟聊简历和背景 后10分钟左右被打断谈问题
当时想了用recursive 方法遍历
[0], [0, 0], [0, 1]
[1], [1, 0], [1, 1]
写了一个大概pseudo code

大家有更好的思路或者代码吗?

补充内容 (2018-11-8 06:02):

M.get([1, 0]) = 3
笔误

M.get([1, 9]) = 3?有点没看懂,但我感觉像是用K维BIT能搞定,或者其他prefix sum也行