‘’’
给定—个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数,要求使用空间复杂度 为 O(1) 的方法。
‘’’
#如果只移动一位 向右移动
lst = [1, 2, 3, 4, 5, 6, 7]
tmp = lst[-1] #保存最后一个元素
for i in range(len(lst)-1, 0, -1):
lst[i]=lst[i-1] #向右移动一次
#处理最后一个元素
lst[0] = tmp
print(lst)
# 移动k次 向右移动 写个循环就行
def rotate(lst, k):
for i in range(k): # 和上面的代码相比 循环k次
tmp = lst[-1] # 保存最后一个元素
for i in range(len(lst) - 1, 0, -1):
lst[i] = lst[i - 1] # 向右移动一次
# 处理最后一个元素
lst[0] = tmp
return lst
if __name__ == '__main__':
lst= [1, 2, 3, 4, 5, 6, 7]
k=3
print(rotate(lst,k))