2016-12-30 38 views
-2

例如,旋轉array A = [3, 8, 9, 7, 6] is [6, 3, 8, 9, 7]。目標是將陣列A旋轉K次;即A的每個元素將被K個索引向右移位。數組的旋轉意味着每個元素右移一個索引,並且數組的最後一個元素也移動到第一位

例如,給定數組A = [3, 8, 9, 7, 6]K = 3,函數應返回[9, 7, 6, 3, 8]

我想在java中這個。 我試過這個。

public static int[] rotation(int[] a,int k) { 

    int[] newArray = new int[a.length]; 
    for(int i = 0 ; i < a.length ; i++) { 
     int newPosition = (i + k)%a.length; 
     newArray[newPosition] = a[i]; 
    } 
    return newArray; 
} 
+2

是什麼問題? –

+2

重複的http://stackoverflow.com/questions/4457277/algorithm-to-rotate-an-array-in-linear-time – Arjit

+0

是什麼問題?你期望什麼,實際發生了什麼? – mm759

回答

1

您可以使用Arrays.toString打印結果。例如:

System.out.println(Arrays.toString(rotation(new int[] { 3, 8, 9, 7, 6}, 3))); 
+1

您可以對這樣的小事情發表評論。 –

+0

它回答了Dhaval Mistry的評論中所解釋的問題。一個小問題得到一個小答案。我添加了一個例子。 – mm759

0
public int[] solution(int[] A, int K) { 
    // write your code in Java SE 8 

    int [] B =new int [A.length]; 

    for(int l=0;K>l;K--){ 
     int j=0; 
     for(int i=0;i<A.length;i++){ 
      if(i==0){ 
       B[j]=A[A.length-1]; 
       j++; 
      } 
      else{ 
       B[j]=A[i-1]; 
       j++; 
      } 
     } 
     for(int i= 0;i<A.length;i++){ 
      A[i]=B[i]; 
     } 

    } 
    return B; 
} 
+1

請添加一些描述來解釋其他利益的答案。 – jjj

0

//也可以使用 // A = B.clone();

公衆詮釋[]溶液(INT [] A,INT K){// 用Java編寫代碼SE 8

int [] B =new int [A.length]; 

for(int l=0;K>l;K--){ 
    int j=0; 
    for(int i=0;i<A.length;i++){ 
     if(i==0){ 
      B[j]=A[A.length-1]; 
      j++; 
     } 
     else{ 
      B[j]=A[i-1]; 
      j++; 
     } 
    } 

    //below part 
    /*for(int i= 0;i<A.length;i++){ 
     A[i]=B[i]; 
    }*/ 
    A = B.clone(); 

} 
return B; 

}

//如果你喜歡:d

相關問題