(Java)旋轉數組

標題:旋轉數組

【題目詳述】:給定一個數組,將數組中的元素向右移動 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)));
}
}

【運行結果】:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章