我最近接受了一次采访,面试官给了我一些假代码并询问了与之相关的问题.不幸的是,由于缺乏准备,我无法回答他的问题.由于时间限制,我不能问他解决这个问题的方法.如果有人能指导我并帮助我理解这个问题,我会非常感激,所以我可以为将来做些改进.下面是伪代码:
A sample state of ‘a’:
[[ 2, NULL, 2, NULL],
[ 2, NULL, 2, NULL],
[NULL, NULL, NULL, NULL],
[NULL, NULL, NULL, NULL]]
FUNCTION foo()
FOR y = 0 to 3
FOR x = 0 to 3
IF a[x+1][y] != NULL
IF a[x+1][y] = a[x][y]:
a[x][y] := a[x][y]*2
a[x+1][y] := NULL
END IF
IF a[x][y] = NULL
a[x][y] := a[x+1][y]
a[x+1][y] := NULL
END IF
END IF
END FOR
END FOR
END FUNCTION
Run Code Online (Sandbox Code Playgroud)
面试官问我:
上面的代码有什么问题,我该如何解决?
一旦纠正,函数foo做什么?请关注功能的结果,而不是实现的细节.
你怎么能让foo变得更通用?解释最多三个可能的泛化方向,并为每个方向描述一个策略,无需编写代码!
我向他提到过: