7. Java-消除数组的重复项

package com.dhl.beyond;

import java.util.Arrays;

public class test {
    
    
    public static void main(String[] args) {
    
    
        int[] arr = {
    
    1, 2, 2, 3};
        shellSort(arr);
        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.toString(removeDuplicates(arr)));

    }

    public static void shellSort(int[] arr) {
    
    
        for (int gap = arr.length / 2; gap > 0; gap /= 2) {
    
    
            for (int i = gap; i < arr.length; i++) {
    
    
                int j = i;
                int temp = arr[j];
                if (arr[j] < arr[j - gap]) {
    
    
                    while (j - gap >= 0 && temp < arr[j - gap]) {
    
    
                        arr[j] = arr[j - gap];
                        j -= gap;
                    }
                    arr[j] = temp;
                }
            }


        }
    }

    public static int[] removeDuplicates(int[] nums) {
    
    
        if (nums == null || nums.length == 0) return new int[]{
    
    };
        int p = 0;
        int q = 1;
        while (q < nums.length) {
    
    
            if (nums[p] != nums[q]) {
    
    
                nums[p + 1] = nums[q];
                p++;
            }
            q++;
        }
        int s = p + 1;

        int[] temp = new int[s];
        for (int i = 0; i < s; i++) {
    
    
            temp[i] = nums[i];
        }
        return temp;
    }


}

猜你喜欢

转载自blog.csdn.net/Beyond_Nothing/article/details/114027005