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]
阅读更多
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【154-Find Minimum in Rotated Sorted Array II(找旋转数组中的最小数字II)】
- 6.5 旋转数组的最小数字(二分法:python,java实现)
- 【LeetCode-面试算法经典-Java实现】【081-Search in Rotated Sorted Array II(搜索旋转的排序数组)】
- 旋转数组的最小数字(C++ 和 Python 实现)
- leetcode Rotate list (链表旋转)的python实现
- 【LeetCode-面试算法经典-Java实现】【033-Search in Rotated Sorted Array(在旋转数组中搜索)】
- 剑指offer-8- Python实现旋转数组的最小数
- Leetcode: 在原矩阵上实现矩阵的旋转(Python)
- 【LeetCode-面试算法经典-Java实现】【189-Rotate Array(旋转数组)】
- leetcode 将已排序的 数组/链表 转换为二叉搜索树(BST),Python实现
- 【LeetCode-面试算法经典-Java实现】【153-Find Minimum in Rotated Sorted Array(找旋转数组中的最小数字)】
- [leetcode]Merge Sorted Array (两个有序数组的合并 C语言实现)
- [LeetCode] 189. Rotate Array 旋转数组
- python实现合并两个数组的方法
- LeetCode | Search in Rotated Sorted Array(在旋转数组中查找)
- leetcode 【 Insertion Sort List 】 python 实现
- 旋转数组的最小数字java实现
- LeetCode 154. Find Minimum in Rotated Sorted Array II(旋转数组查找)
- leetcode(434,205) python实现
- LeetCode--Rotate Image(旋转图像)Python