1. // 有序数组去重 时间O(N) 空间O(1)
    2. public static int[] removeDuplicate(int[] arr) {
    3. if (arr == null || arr.length == 0) {
    4. return null;
    5. }
    6. int slow = 0; // 慢指针 元素不同时才移动
    7. int fast = 1; // 快指针
    8. while (fast < arr.length) {
    9. if (arr[fast] != arr[slow]) { // 快慢指针对应的元素不相等,将快指针位置上的元素赋值slow++
    10. slow++;
    11. arr[slow] = arr[fast];
    12. }
    13. fast++;
    14. }
    15. // 把去重之后的数据重新复制成一个新数组返回
    16. return Arrays.copyOfRange(arr, 0, slow + 1);
    17. }