【题目描述】
Given a rotated sorted array, recover it to sorted array in-place.
给定一个旋转排序数组,在原地恢复其排序。
【题目链接】
http://www.lintcode.com/en/problem/recover-rotated-sorted-array/
【题目解析】
首先可以想到逐步移位,但是这种方法显然太浪费时间,不可取。下面介绍利器『三步翻转法』,以[4, 5, 1, 2, 3]为例。
首先找到分割点5和1
翻转前半部分4, 5为5, 4,后半部分1, 2, 3翻转为3, 2, 1。整个数组目前变为[5, 4, 3, 2, 1]
最后整体翻转即可得[1, 2, 3, 4, 5]
由以上3个步骤可知其核心为『翻转』的in-place实现。使用两个指针,一个指头,一个指尾,使用for循环移位交换即可。
【参考答案】
http://www.jiuzhang.com/solutions/recover-rotated-sorted-array/