📅  最后修改于: 2023-12-03 15:10:48.033000             🧑  作者: Mango
在某些需要对数组进行操作的情况下,查询数组的左右循环移位是一项非常有用的技能。
左移位是指将数组中的元素向左移动k个位置,其中k是一个非负整数。图示如下:
[1,2,3,4,5] -> [3,4,5,1,2] (k=2)
代码实现:
def left_rotate(arr, k):
n = len(arr)
k = k % n
for i in range(k):
temp = arr[0]
for j in range(n-1):
arr[j] = arr[j+1]
arr[n-1] = temp
return arr
上述代码中,我们首先计算出k对数组长度n取余后的值,然后对于每一个在[0, k)范围内的索引i,我们将其对应的元素移动到i+k的位置。
右移位是指将数组中的元素向右移动k个位置,其中k是一个非负整数。图示如下:
[1,2,3,4,5] -> [4,5,1,2,3] (k=2)
代码实现:
def right_rotate(arr, k):
n = len(arr)
k = k % n
for i in range(k):
temp = arr[n-1]
for j in range(n-1, 0, -1):
arr[j] = arr[j-1]
arr[0] = temp
return arr
上述代码中,我们首先计算出k对数组长度n取余后的值,然后对于每一个在[0, k)范围内的索引i,我们将其对应的元素移动到i-k的位置。
以上就是查询数组左右循环移位的介绍,希望可以对读者有所帮助。