數組向右移動n位--java實現

public class T2 {
    public static int[] reverse(int[] arr, int start, int end) {
        if (start > end || start < 0 || end > arr.length) {
            System.out.println("參數越界");
            return null;
        }
        if (end == arr.length)
            end = arr.length - 1;
        if (start == end)
            return arr;
        for (int i = start, j = end; i <= (end + start) / 2; i++, j--) {
            //#1不使用異或運算最好做,注意容易出現同值異或結果爲0情況
            //int a = arr[i];
            //arr[i] = arr[j];
            //arr[j] = a;
           
             //#2使用異或
            if(i==j) break;
            arr[i] ^= arr[j];
            arr[j] ^= arr[i];
            arr[i] ^= arr[j];
              
        }
        return arr;
    }

    public static int[] remove(int[] arr, int mR) {
        if (mR < 0 || mR > arr.length) {
            System.out.println("移動參數錯誤");
            return null;
        }
        if (mR == 0)
            return arr;
        arr = reverse(arr, 0, arr.length);
        if (mR == arr.length)
            return arr;

        arr = reverse(arr, 0, mR - 1);
        arr = reverse(arr, mR, arr.length);
        System.out.println(Arrays.toString(arr));

        return arr;

    }

    public static void main(String[] args) {
        int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7 };
        //System.out.println(Arrays.toString(reverse(arr, 4, 6)));
        int[] b = remove(arr, 5);
        System.out.println(Arrays.toString(b));

    }

}

 

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