我正准备进行软件工作面试,而且我在就地修改阵列时遇到了麻烦.例如,在out-shuffle问题中,你交错两个数组的一半,这样1 2 3 4 5 6 7 8就会变成1 5 2 6 3 7 4 8. 这个问题要求一个恒定存储器解决方案(和线性) - 时间,虽然我不确定这是否可能).
首先,我认为线性算法是微不足道的,但后来我无法解决它.然后我找到了一个简单的O(n^2)算法,但它花了我很长时间.我仍然没有找到更快的解决方案.
我记得也很难解决Bentley编程珍珠中的类似问题,第2栏:旋转i位置左侧的数组(例如,旋转2的abcde变为cdeab),O(n)并且只有几个字节的额外空间.
有没有人有提示帮助我解决这些问题?是否有针对此类问题的特定教程?谢谢!