给定一个整数数组nums,将数组向右旋转k步,其中k是非负的。
范例:
输入:nums = [1,2,3,4,5,6,7],k = 3
输出:[5,6,7,1,2,3,4]
说明:
[001 pdf 1st-31 files]向右旋转1步:[7,1,2,3,4,5,6]
[001 pdf 1st-31 files]向右旋转两步:[6,7,1,2,3,4,5]
[001 pdf 1st-31 files]向右旋转3步:[5,6,7,1,2,3,4]
时间复杂度为O(n),空间复杂度为O(1)。
时间复杂度为O(1),空间复杂度为O(1)。
2条答案
按热度按时间pcww981p1#
这在功能上是正确的,但就我所知,它的时间复杂度既不是O(1)也不是O(n)。
为什么?为什么?时间复杂度是O(n)的,所以时间复杂度是O(n)的。
如果我们忽略可能发生的事情“在封面下”,它是O(1)的[额外的]空间复杂度。
字符串
如果你不关心额外的空间,你应该能够实现O(1)的时间复杂度:
型
输出(两种情况下):
型
2ekbmq322#
你可以使用一个临时变量来保存正在移动的值,并从一个目标位置到另一个目标位置遍历索引(使用模来环绕列表的大小):
字符串
输出量:
型