Recover Rotated Sorted Array – Python 3 ( Week 11 – 10)

Solution 1

   class Solution:
    """
    @param nums: An integer array
    @return: nothing
    """
    def recoverRotatedSortedArray(self, nums):
        # write your code here
        if not nums:
            return []
            
        minIndex = self.findMinimum(nums)
        if minIndex == 0:
            return nums
        #print(minIndex)
        self.reverseArray(nums, 0, minIndex - 1 )
        #print(nums[:minIndex])
        self.reverseArray(nums, minIndex, len(nums) - 1)
        #print(nums[minIndex:])
        self.reverseArray(nums, 0, len(nums) - 1)
        #print(nums)
        return nums
      
    
    def findMinimum(self, nums):
        minIndex = 0
        minmum = nums[0]
        for i in range(len(nums) - 1):
           if nums[i] < minmum:
               minmum = nums[i]
               minIndex = i
        return minIndex
        

    def reverseArray(self, nums, start, end):
        while start < end:
            nums[start], nums[end] = nums[end], nums[start]
            start += 1
            end -= 1
        

Time O(n). Space O(1).

Leave a comment

Design a site like this with WordPress.com
Get started