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));
}
}