真不敢相信我居然,没有用循环,纯纯小白文大佬请原谅@——@嘿嘿
给你一个数组,将数组中的元素向右轮转
k
个位置,其中k
是非负数。
最开始的时候我想这,python就很简单 ,不就是换个位置嘛,然后直接一个大弄特NO!!!姐妹们他有坑,这是我刚开的框架,我看着这没问题啊,但是就是通不过,好生气!
直到我看到
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
是它就是它!!!不能换地址
因为它不返回值
如果宝贝们没注意,就提交,力扣公关只会说,你这个题OUT,因为它是根据地址来输出nums数组
说通俗一点存一个数据,1.内容,2.地址
呢如何使用上种方法,而且不换地址 ,大家看看下面的几个例子
很明显当a[:] =c时,a的地址没有改变,当a=c时,a的地址则会被改变
这不就好办了,在最后a后面加个[ : ]不就OK,了!
废话不多说,代码奉上~~
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
b=len(nums)
if(k<=b):
nums[:]=nums[b-k:]+nums[0:b-k]
else:
k=k%b
nums[:]=nums[b-k:]+nums[0:b-k]#加[:]!!!
a=[1,2,3,4,5,6,7]
k=3
solution=Solution()
c=solution.rotate(a,k)
下面是一个,小的的错误分享,大人们也可以跳过
在我提交的二次,它就差一点对了,它报了,这样一个错
没想到当时,我也很蒙,我想这咋还能移第五个呢???我用重新审题了,原来它是轮回的所以我再次修改,当移动的值大于数组元素个数时,就是取余,其余都是轮回,OK,不知道有没有小可爱和我犯一样错,呜呜呜