阵列修改[左旋转]

Array modification [Left Rotation]

本文关键字:旋转 修改 阵列      更新时间:2023-10-16

所以,我只是在这里解决了问题:数组左旋转-Hackerrank在解决这个问题之后,我检查了其他人代码我很好奇他的代码如何工作,所以你们可以帮助我找出他的代码的工作原理。我的代码:

#include <iostream>
using namespace std;
int main()
{
int n;
int d;
cin >> n >> d;
int arr[n];
int lrotate[n];
for (int i=0; i<n; i++)
{
    cin >> arr[i];
}
if (n-d>0)
{
    for (int i=d; i<n;i++)
    {
        lrotate[i-(d)]=arr[i];
    }
    for (int i=0; i<n; i++)
    {
        lrotate[i+(n-d)]=arr[i];
    }
    for (int i=0; i<n; i++)
    {
        cout << lrotate[i] << " ";
    }
}
}

这是他的代码:

#include <iostream>
using namespace std;
int main() {
int N, d, i;
cin >> N >> d;
int start = N - d;
int *arr = new int[N];
for (i=0; i<N; ++i)
{
    if (start == N)
        start = 0;
    cin >> arr[start++];
}
for (i=0; i<N; ++i)
    cout << arr[i] << " ";
return 0;
}

对不起,如果这是一个菜鸟问题,我很好奇他的代码是如何工作的,尤其是第7行和第12行。

他已经使用了简单的算法来解决此问题。

  1. 如果n == d数组没有变化。
  2. 如果"启动"不等于0(例如:start = 3表示,阵列必须旋转3次),则首先要循环,则该数组从索引从索引3开始填充到数组的结尾。
  3. 因此,启动正在逐渐增加,如果start == n,然后开始变为0,则在索引0中填充0索引3。

javaScript(nodejs)

中的左旋转
    /*
 * Complete the 'rotLeft' function below.
 *
 * The function is expected to return an INTEGER_ARRAY.
 * The function accepts following parameters:
 *  1. INTEGER_ARRAY a
 *  2. INTEGER d
 */
    function rotLeft(a, d) {
        // Write your code here
        let tempArr = [];
        let j=0;
        for(let i=d;i<a.length;i++){
            tempArr[j]=a[i];
            j++;
        }
        for(let i=0;i<d;i++)
        {
            tempArr[j]=a[i];
            j++;
        }
        return tempArr;
               
    }