所以,我只是在这里解决了问题:数组左旋转-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行。
他已经使用了简单的算法来解决此问题。
- 如果n == d数组没有变化。
- 如果"启动"不等于0(例如:start = 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;
}