返回唯一元素数组

时间:2016-09-19 23:35:07

标签: java arrays

我是Java新手,我很难尝试将旧数组中的唯一值添加到我的新数组中,从技术上讲,我必须返回一个包含唯一元素的新数组,而不使用集合。

    public static void main(String[] args) {
    double[] list = {1,2,1};
    double [] Arr = new double[list.length];
    for(int i = 0; i < list.length; i++) {
        for(int x = 0; x < list.length; x++) {
            if(list[i] != list[x]){

            }
        }
    }
}

问题:如何将它们添加到新阵列?

我将其更改为:

    int index = 1;
    int unique = 0;
    newArray[0] = list[0];
    while( index < list.length) {
        if(list[index] != list[index - 1]){
            unique = unique + 1;
            newArray[unique] = list[index];
        }
        index++;
    }
    return newArray;
}

立即行动。

3 个答案:

答案 0 :(得分:1)

我还没有执行此操作,但是代码下方应该让您对如何完成此操作有充分的了解

Python

新数组在删除重复项后最后会有默认的0值,您可能需要修剪它,可能会创建一个public static void main(String[] args) { double[] list = {1,2,1}; double [] Arr = new double[list.length]; int uniqueIndex = 0; for(int i = 0; i < list.length; i++) { boolean present = false; for(int x = 0; x < uniqueIndex; x++) { if(list[i] == Arr[x]){ present = true; break; } } if(!present) Arr[uniqueIndex++] = list[i]; } }

的新数组

答案 1 :(得分:1)

仅仅因为我无法自助,这是使用Java 8功能的另一种选择。它比其他人简洁得多,但可能不是你的老师所追求的。

public static void main(String[] args) {
  double[] list = {1, 2, 1};

  double[] arr = Arrays.stream(list).distinct().toArray();

  System.out.println(Arrays.toString(arr));
}

答案 2 :(得分:0)

另一种方法。新手应该自己编写代码。

1)对数组/列表进行排序。

2)遍历数组/列表直到length-1,如果list [i]!= list [i + 1],则将列表[i]推送到新列表。

3)如果list [length-1]!= list [length],将列表[length]推送到新列表。

复杂性:O(nlgn)+ O(n)