1008 数组元素循环右移问题Python
时间: 2024-04-25 15:19:27 浏览: 149
在Python中,数组元素循环右移是指将数组中的元素向右移动k个位置,超过数组长度的元素会从数组的开头重新出现。下面是实现该问题的一种方法:
```python
def rotate_right(nums, k):
k = k % len(nums) # 确保k的值在合理范围内
nums[:] = nums[-k:] + nums[:-k] # 将数组切片并重新拼接
return nums
nums = [1, 2, 3, 4, 5]
k = 2
rotated_nums = rotate_right(nums, k)
print(rotated_nums)
```
以上代码中,`rotate_right`函数接受一个数组`nums`和一个整数`k`作为参数,返回经过右移操作后的数组。首先,我们对k进行取模操作,确保k的值在合理范围内。然后,通过切片操作将数组分成两部分:后k个元素和前n-k个元素,再将这两部分重新拼接成一个新的数组。
输出结果为:[4, 5, 1, 2, 3]
相关问题
数组元素循环右移问题
以下是两种实现数组元素循环右移的方法:
1. 通过对数组进行三次逆置来达到循环的效果,具体实现可以参考下面的代码:
```python
def reverse(nums, start, end):
while start < end:
nums[start], nums[end] = nums[end], nums[start]
start += 1
end -= 1
def rotate(nums, k):
n = len(nums)
k %= n
reverse(nums, 0, n - 1)
reverse(nums, 0, k - 1)
reverse(nums, k, n - 1)
nums = [1, 2, 3, 4, 5]
k = 2
rotate(nums, k)
print(nums) # 输出:[4, 5, 1, 2, 3]
```
2. 通过取余数的方法来实现循环右移,具体实现可以参考下面的代码:
```python
def rotate(nums, k):
n = len(nums)
k %= n
for i in range(n):
print(nums[(n - k + i) % n], end=' ')
nums = [1, 2, 3, 4, 5]
k = 2
rotate(nums, k) # 输出:4 5 1 2 3
```
数组元素循环右移问题PTA
以下是C语言和Python两种实现数组元素循环右移问题的例子:
C语言实现:
```c
#include <stdio.h>
void reverse(int arr[], int start, int end) {
while (start < end) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
void rightShift(int arr[], int n, int k) {
k %= n;
reverse(arr, 0, n - k - 1);
reverse(arr, n - k, n - 1);
reverse(arr, 0, n - 1);
}
int main() {
int n, k;
scanf("%d %d", &n, &k);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
rightShift(arr, n, k);
for (int i = 0; i < n; i++) {
printf("%d", arr[i]);
if (i != n - 1) {
printf(" ");
}
}
return 0;
}
```
Python实现:
```python
nums = input()
L = nums.split(" ")
A, B = int(L[0]), int(L[-1])
B = B % A
numChars = input().split(" ")
Array = [int(i) for i in numChars]
if B > 0:
Array = Array[::-1]
leftA = Array[:B][::-1]
rightA = Array[B:][::-1]
Array = leftA + rightA
length = len(Array)
for i in range(length):
print(Array[i], end="")
if i < (length - 1):
print(" ", end="")
i = i + 1
```
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)