有n个整数,使其前面各数顺序向后移m个位 置,最后m个数变成最前面的m个数。 例如:n是10,m是3 原始数据:12345678910 调后数据:89101234567
时间: 2024-05-07 07:21:31 浏览: 62
python 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数(示例)
这道题可以采用反转数组的思路进行解决。首先将整个数组反转,然后将前面m个数再次反转,再将后面n-m个数反转,最终得到的结果就是将前面m个数顺序向后移m个位置,且最后m个数变成最前面的m个数的数组。
下面是代码实现:
```python
def reverse(nums, start, end):
# 反转数组
while start < end:
nums[start], nums[end] = nums[end], nums[start]
start += 1
end -= 1
def move(nums, m):
n = len(nums)
m %= n
reverse(nums, 0, n - 1)
reverse(nums, 0, m - 1)
reverse(nums, m, n - 1)
return nums
# 测试
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
m = 3
print(move(nums, m)) # 输出 [8, 9, 10, 1, 2, 3, 4, 5, 6, 7]
```
时间复杂度为 O(n),空间复杂度为 O(1)。
阅读全文