【LeetCode】旋转数组(Python版)

一、思路

逐个数据取出来,依次赋值,或者整体取出来整体赋值
Python中numpy数组切片:print(a[0::2])、a[::2]、[:,2]、[1:,-1:]、a[::-1]、[ : n]、[m : ]、[-1]、[:-1]、[1:]等的含义(详细)

二、输出结果

在这里插入图片描述

三、代码实现

  1. 颠倒列表弹出添加元素
def rotate(nums, k):
    if len(nums) < 2:
        return
    #对数组进行翻转,为首端添加数据使用append做铺垫
    nums.reverse()
    k = k % len(nums) #避免k大于nums的长度
    while k > 0:
    	#翻转后的数组,第一个数据即为原数组的最后一个数据
        temp = nums.pop(0)
        #翻转后的数组,末尾追加数据即为给头部添加数据
        nums.append(temp)
        k -= 1
    #翻转结束后需要翻转回来
    nums.reverse()
    return 
  1. 逐个移动元素
def rotate(nums, k):
    if len(nums) < 2:
        return
    k = k % len(nums)
    while k > 0:
        #将最后一个数据保存到变量中
        temp = nums[-1]
        rrr = nums[:-1]
        #将数组整体往后移动一位,此时nums[:-1]表示从开始到倒数第二位
        #nums[1:]表示从1到最后一位
        nums[1:] = nums[:-1]
        print(nums)
        nums[0] = temp
        k -= 1
    return
  1. 整体移动元素块
def rotate(nums, k):
    if len(nums) < 2:
        return 
    #此处表示判断nums数组的长度是否大于k
    #len(nums)>k,则返回k值
    k = k % len(nums)
    #获取数组后面k个数据
    temp = nums[len(nums) - k:] # 5, 6, 7
    #获取数组1-5的数据放至[3:]中
    nums[k:] = nums[:len(nums) - k]
    #把最后的3个数据赋值给数组前3为位
    nums[:k] = temp
    return
 if __name__ == "__main__":
    nums = [1, 2, 3, 4, 5, 6, 7]
    k = 3
    print("before nums = %s" %nums)
    rotate(nums, k)
    print("after nums = %s" %nums)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值