旋转k个数组
"""
旋转k个元素的
解法:
首先通过k和数组的长度进行比较,k > 数组长度,则等于先旋转了一圈,数组没有变化,所以需要k进行求余 k=k%len(nums)
当数组小于等于1 或者 k==0[刚好全部旋转了k/len(nums)整圈],所以数组的形状没有发生变化
先对整个数组旋转一次
然后对前k个旋转一次
最后对k, n-k旋转一次
"""
def rotate_array_operation(nums, k):
k = k % len(nums)
if k == 0 or len(nums) <= 1:
return
def rotate_operation(left, right):
while left < right:
nums[left], nums[right] = nums[right], nums[left]
left += 1
right -= 1
rotate_operation(0, len(nums) - 1) #先全部旋转一次 [7,6,5,4,3,2,1]
rotate_operation(0, k - 1) #先前k个再旋转一次 [5,6,7,4,3,2,1]
rotate_operation(k, len(nums) - 1) #k 到 n 的元素旋转 [5,6,7,1,2,3,4]
if __name__ == "__main__":
nums = [1,2,3,4,5,6,7]
k = 2
rotate_array_operation(nums, k)
print(nums)
posted on 2022-02-11 14:56 random_boy 阅读(55) 评论(0) 收藏 举报
浙公网安备 33010602011771号