【题目描述】
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/
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。