📌  相关文章
📜  查询数组左右循环移位(1)

📅  最后修改于: 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的位置。

以上就是查询数组左右循环移位的介绍,希望可以对读者有所帮助。