我到处看到这些编程问题:旋转数组的原因是什么?
查找排序的旋转整数数组中的元素。
已排序的数组已向左旋转了r次。尽量少找时间。
通过旋转到位ķ位置的数组(不使用额外的内存)
等等....
我的问题是,为什么会有人这样做呢?是否有一个真正的算法需要线性阵列旋转?
我到处看到这些编程问题:旋转数组的原因是什么?
查找排序的旋转整数数组中的元素。
已排序的数组已向左旋转了r次。尽量少找时间。
通过旋转到位ķ位置的数组(不使用额外的内存)
等等....
我的问题是,为什么会有人这样做呢?是否有一个真正的算法需要线性阵列旋转?
因为他们是练习吗?这就像学校给出的问题。他们不是现实世界的问题。他们是应该教你一些事情的问题。你所有的三个例子都很有趣。
已经有太多的程序员在编写(坏)代码之前10分钟无法完成任务。这些问题需要你去思考。
我会补充说,有各种程序员(包括我在内)喜欢复杂的问题。复杂的数学+编程问题就像数独,但更好,因为在做数独之后,你还没有学到任何新东西(你只是锻炼了你的大脑),而在做了一个复杂的问题之后,有时你学到了一些东西(至少是如何让你的代码完全不可读:-)),当然你已经锻炼了你的大脑。甚至有几百个问题的网站,如spoj。
好吧,这是一种深入了解的方式,是吗?我训练很努力,当你比赛更容易时,我完全确定在这种情况下,这将是有用的!
旋转的概念在几个地方弹出,但它通常更聪明地实现(参见环形缓冲区),因为实际上旋转的数组元素需要线性时间,因此在需要时需要一定的时间。 – delnan
这是一个很广泛的问题。可能有一千个理由......简单的例子:旋转的数组是2D空间矢量的坐标,是围绕(1,1)轴的镜像变换。 – lapk
我记得有一个基本上是数组操作的项目,因为为了创建镜像或旋转图像,你必须改变索引,这样做需要数组操作。尽管这些问题似乎毫无意义,但真正的目标是创造一种思考和解决问题的方式,它们可能具有真实世界的应用程序! – StevenTsooo