对大小数组的左旋转操作将每个阵列元素1单元向左移位。例如,如果在数组[1,2,3,4,5]上执行左旋转,则数组将变为[3,4,5,1,2]。
我的代码成功运行了7个测试用例,但对于2个测试用例,它显示超时错误,如何改进此
using System;
using System.Collections.Generic;
using System.IO;
class Solution {
static void Main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution */
string[] tokens = Console.ReadLine().Split();
int a = int.Parse(tokens[0]);
int b = int.Parse(tokens[1]);
string[] number = Console.ReadLine().Split();
int [] array = new int[100000];
for(int i=0;i< a;i++)
{
array[i]= int.Parse(number[i]);
}
for(int i=1;i<= b;i++)
{
int d = array[a - 1];
array[a - 1] = array[0];
for(int j=1;j<=a-2;j++)
{
array[j - 1] = array[j];
}
array[a - 2] = d;
}
for(int k=0;k< a;k++)
{
Console.Write(array[k]+" ");
}
Console.ReadKey();
}
}
答案 0 :(得分:0)
下面的代码将整数数组“ a”的位置向左旋转 d次。
int[] rotateLeft(int[] a, int d) {
int len=a.length;
int res=0;
if(d<len) res=d;
else res=d%len;
while(res>0)
{
int temp=a[0];
for(int i=0;i<len-1;i++) a[i]=a[i+1];
a[len-1] = temp;
res--;
}
return a;
}
答案 1 :(得分:0)
#include<bits/stdc++.h>
#include<vector>
using namespace std;
int main(){
int d,n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
cin>>d;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
cout<<a[(i+d)%n]<<" ";
return 0;
}