色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java項鏈的翻轉和旋轉問題

陳麥偉1年前6瀏覽0評論

Java項鏈是一個經典的問題,指的是將一條由n個珠子組成的項鏈進行翻轉和旋轉的操作。

在項鏈上進行翻轉操作,就是將其中一段珠子翻轉過來,比如說將第i到第j個珠子翻轉,則第i個珠子與第j個珠子交換位置,第i+1個珠子與第j-1個珠子交換位置,以此類推直至i與j相遇。翻轉操作可以直接改變珠子在項鏈上的相對順序。

而旋轉操作則是將項鏈或者其中一部分向左或右移動k個珠子,導致末尾的k個珠子移到了開頭,或者開頭的k個珠子移到了末尾。旋轉操作不改變珠子在項鏈上的相對順序。

public static int[] flip(int[] a, int i, int j){
while(i<j){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
return a;
}
public static int[] rotate(int[] a, int k){
int n = a.length;
reverse(a, 0, n-1);
reverse(a, 0, k-1);
reverse(a, k, n-1);
return a;
}
public static void reverse(int[] a, int i, int j){
while(i<j){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
}

上述代碼實現了項鏈翻轉和旋轉的操作。flip方法接收一個整型數組a和兩個下標i和j,將a數組從i到j的元素進行翻轉。rotate方法接收一個整型數組a和一個整型變量k,將a數組向左旋轉k個元素。它先將整個數組翻轉,再分別將0~k-1和k~n-1位置之間的元素分別翻轉,最后得到向左旋轉k個元素后的數組a。