去除排序好的数组中重复的元素

题目描述:
去除数组中重复的元素 例如 1,2,2,3,3,4,5,6,6->1,4,5

实现思想:
简单来说就是。如果当前元素是第一个元素,只要比较它与后一个元素是否相等,如果不相等,直接添加到新的数组中。
如果当前元素不是第一个元素,就比较它相邻的左右两边的元素是否相等,如果不相等就添加。
详细就是:
先找到一个基准,假如是第一个元素,定义一个游标,指向第二个元素,然后遍历数组,让基准与游标所指向的元素比较,如果相等,则游标移动一位,如果不相等,则修改基准为当前游标的值,然后比较游标的下一位与基准是否相等,如果相等,则继续移动游标,如果不相等,则将基准添加到新的数组中。但是会漏掉一个元素不是重复元素的情况,因此还需特殊对待一个元素。

public class GetOffer3 {
    public static void main(String[] args) {
        int arr[] = { 1, 2, 2, 3, 3, 4, 5, 6, 6,8,9,10,10 };
        List temp = remove(arr);
        for (int i = 0; i < temp.size(); i++) {
            System.out.print(temp.get(i) + ",");
        }
    }

    private static List remove(int[] arr) {
        if (arr.length == 1) {
            return Arrays.asList(arr);
        }
        int tem =arr[0];
        int i=1;
        List list = new ArrayList();
        if(tem!=arr[i]){
            list.add(tem);
        }
        while(i<arr.length){
            if(tem==arr[i]){
                ++i;
            }else{
                tem=arr[i];
                if(tem!=arr[i+1]){
                    list.add(tem);
                }else{
                    ++i;
                }
            }
        }
        return list;
    }
}

猜你喜欢

转载自blog.csdn.net/nwpu_geeker/article/details/79599107
今日推荐