【LintCode 简单】39. 恢复旋转排序数组

本文介绍了一种算法,用于在原地恢复一个旋转排序数组至升序排列。通过实例演示了如何找到旋转点并调整数组顺序,提供了Python实现代码。

1.问题描述:

给定一个旋转排序数组,在原地恢复其排序。(升序)

 

2.样例:

Example1:
[4, 5, 1, 2, 3] -> [1, 2, 3, 4, 5]
Example2:
[6,8,9,1,2] -> [1,2,6,8,9]

3.代码:

class Solution:
    """
    @param nums: An integer array
    @return: nothing
    """
    def recoverRotatedSortedArray(self, nums):
        # write your code here
        # nums.sort()
        for i in range(len(nums)-1):
            if nums[i] > nums[i+1]:
                for i in range(i+1, len(nums)):
                    nums.insert(0, nums.pop())

注意:这里可以直接使用Python自带的sort()方式通过测试。另外,对于方法2,这里思路是先去遍历寻找被rotated的点,因为数组是部分有序的,找到rotated点之后,对之后的部分采用和之前第8题相同的思路,可以利用stack pop出元素,原地插入到数组的第一个位置。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值