##### Short Problem Definition:

Rotate an array to the right by a given number of steps.

##### Link

##### Complexity:

expected worst-case time complexity is O(N)

##### Execution:

There are multiple solutions to this problem. I picked the one that does not create a copy of the array.

##### Solution:

def reverse(arr, i, j): for idx in xrange((j - i + 1) / 2): arr[i+idx], arr[j-idx] = arr[j-idx], arr[i+idx] def solution(A, K): l = len(A) if l == 0: return [] K = K%l reverse(A, l - K, l -1) reverse(A, 0, l - K -1) reverse(A, 0, l - 1) return A

If you enjoyed this post, then make sure you subscribe to my Newsletter and/or Feed.