旋转数组 空间复杂度为O(1)python

文章介绍了如何使用Python编程语言,通过循环和临时变量,以空间复杂度为O(1)的方式实现数组元素向右移动k个位置的操作,提供了单次移动和多次移动的函数示例。
摘要由CSDN通过智能技术生成

‘’’
给定—个数组,将数组中的元素向右移动 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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值