91804665fa2fd6fb3a8f68f9a0e17b4b
列表左旋问题:Array Left Rotation

这是“硅谷算法面试”的第一篇文章,我们来聊一聊面试中经常遇到的一个问题:Array Left Rotation。文章将分为三部分:问题描述(英文和中文),测试用例,和 Python 解答(最初版和优化版)。

问题描述

A left rotation operation on an array shifts each of the array's elements 1 unit to the left. For example, if 2 left rotations are performed on array $[1,2,3,4,5]$ , then the array would become $[3,4,5,1,2]$.

Function Descriptions

Complete the function rotLeft as given below. It should return the resulting array of integers separated by space. The function rotLeft has the following parameter(s):

  • An array of integers $a$.
  • An integer $d$, the number of rotations.

Constraints

  • $ 1\leq n \leq 10^5 $
  • $ 1\leq d \leq n $
  • $ 1\leq a[i] \leq 10^6 $

Sample

Input:
5 4
1 2 3 4 5
Output:
5 1 2 3 4

中文说明

在 Array 进行 Left Rotation 就是将 Array 内每个元素向左移动 1 个位置。例如,对于 $[1,2,3,4,5]$执行步长为 2 的 Left Rotation 后结果为 $[3,4,5,1,2]$。我们要完成下面给出的函数rotLeft,这个函数接收两个参数:一个包含 $a$ 个元素的 Array,和一个 Left Rotation 的步长整数 $d$。具体数值要求和输入输出示例见上面英文部分。

给出的rotLeft函数

#!/bin/python3

import math
import os
import random
import re
import sys

def rotLeft(a, d):
    pass

测试用例

这里给出两组测试用例,用来测试我们最后的算法是否正确:

```
第一组
Input
d = 10
a = 41 73 89 7 10 1 59 58 84 77 77 97 58 1 86 58 26 10 86 51

top Created with Sketch.