標題:旋轉數組
【題目詳述】:給定一個數組,將數組中的元素向右移動 k 個位
置,其中 k 是非負數.
【舉例】:輸入: [1,2,3,4,5,6,7] 和 k = 3
輸出: [5,6,7,1,2,3,4]
【解題思路】:將數組中的每個數有往右移k位,不夠的往第一位
移動。比如:數組中的元素7要右移3位,則最終移
動到元素3的位置,依次類推。
//旋轉數組,即:數組中每個元素向右旋轉k位
public class Rotate{
public static int[] rotate(int[] nums,int k){
//旋轉前:[1,2,3,4,5]
//旋轉後:[3,4,5,1,2]
k=k%nums.length;
//先拷貝要旋轉到前面來的
int[] rightpart=Arrays.copyOfRange(nums,nums.length-k,nums.length);
//再進行旋轉(旋轉到後面的length-k位)
System.arraycopy(nums,0,nums,k,nums.length-k);
System.arraycopy(rightpart,0,nums,0,k);
return nums;
}
public static void main(String[] args) {
int[] nums=new int[]{1, 2, 3, 4,5,6,7};
System.out.print("輸入:");
System.out.println(Arrays.toString(nums));
System.out.print("輸出:");
System.out.println(Arrays.toString(rotate(nums, 3)));
}
}
【運行結果】: