数组的左旋转显示超时错误

时间:2016-08-01 11:47:43

标签: arrays

对大小数组的左旋转操作将每个阵列元素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();
    }
}

2 个答案:

答案 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;      
}