您的位置:首页 > 编程语言 > Python开发

leetcode之旋转数组python实现

2018-08-17 09:57 477 查看

原题如下:

    输入:

[1,2,3,4,5,6,7]
和 k = 3 输出:
[5,6,7,1,2,3,4]
解释: 向右旋转 1 步:
[7,1,2,3,4,5,6]
向右旋转 2 步:
[6,7,1,2,3,4,5]
向右旋转 3 步:
[5,6,7,1,2,3,4]

   解题思路:首先旋转无论怎样旋转都不会超过数组的最大数。接着分析,如果我们向右旋转一位,可以发现,原来的nums[6]变成了nums[0],也就是最大循环就是数组的个数,所以我们自然而然的想到了取余。如果我们要在个数为7的数组里左移3位,那么可以看到原来的nums[6]变成了nums[2],整体去看,是不是整个后四位与前三位位置进行了对调。所以运用python切片的原理一行代码就可以实现空间复杂度O(1)的算法。

       假设输入旋转数为k 列表名为nums 代码如下:

       if(len(nums)==None)or(len(nums)==1):

             rerurn nums[:]

      else:

              i = len(nums)%k

              nums[:] = nums[i:len(nums)-1]+nums[:i-1]

 

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: