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).