leetcode189:旋轉陣列
阿新 • • 發佈:2018-11-01
思想:
首先判斷nums是否為空以及k是否為零,若是則直接返回nums。然後定義一個反轉函式reverse,使得陣列前後元素調換位置,直到全部調換。最後先nums[0,len(nums)-1-k]開始調換,然後nums[en(nums)-1-k+1,len(nums)-1]開始調換,最後nums[0,len(nums)-1]調換。
class Solution: def rotate(self, nums, k): """ :type nums: List[int] :type k: int :rtype: void Do not return anything, modify nums in-place instead. """ if len(nums) == 0 or k == 0: return def reverse(start, end, s): while start < end: s[start], s[end] = s[end], s[start] start += 1 end -= 1 n = len(nums) - 1 k = k % len(nums) reverse(0, n - k, nums) reverse(n - k + 1, n, nums) reverse(0, n, nums)
向大佬學習!!!!