我到处都能看到这些编程问题:
在已排序的旋转整数数组中查找元素。
已排序的数组已向左旋转 r 次。在最短的时间内找到 r。
将数组原地旋转 k 个位置(不使用额外内存)
等等....
我的问题是,为什么有人会这样做?是否有真正的算法需要线性阵列旋转?数组旋转有哪些实际用途?
我到处都能看到这些编程问题:
在已排序的旋转整数数组中查找元素。
已排序的数组已向左旋转 r 次。在最短的时间内找到 r。
将数组原地旋转 k 个位置(不使用额外内存)
等等....
我的问题是,为什么有人会这样做?是否有真正的算法需要线性阵列旋转?数组旋转有哪些实际用途?
因为它们是练习?这就像在学校给出的问题。它们不是现实世界的问题。它们是应该教会你一些东西的问题。你的三个例子都很有趣。
已经有太多的程序员在编写(糟糕的)代码之前无法思考 10 分钟。这些问题需要你思考。
我要补充一点,有各种各样的程序员(包括我)喜欢好的复杂问题。复杂的数学+编程问题就像数独,但更好,因为在做数独之后你没有学到任何新东西(你只是锻炼了你的大脑),而在做一个复杂的问题之后,有时你学到了一些东西(至少如何让你的代码完全不可读:-) ) 并且你肯定已经锻炼了你的大脑。甚至有数百个问题的网站,例如spoj。
嗯,这是一种深入理解的方法,是吗?我你训练很努力,当你玩的时候更容易,我完全相信在这种情况下,这会很有用!