2016-09-19 5 views
1

저는 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; 
} 

작품 :

나는 그것을 변경했습니다.

답변

1

나는 이것을 실행하지 않은,하지만 코드 아래 것은 중복을 제거한 후 당신이

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

새로운 배열은 0 값 끝에 기본있을 것입니다 수행해야 할 방법의 공정한 아이디어를 줄 것이다, 당신은 할 수있다 그것을 손질하고 싶으면 System.arraycopy

0

다른 방법으로 새 ​​것을 만들 수 있습니다. 초보자는 직접 코드를 작성해야합니다.

1) 배열/목록을 정렬하십시오.

2)의 길이 - 1까지 어레이 /리스트를 트래버스 한리스트 [I]! =리스트 [내가 + 1], 푸시 게시하면 [I] 새로운리스트.

3)리스트 [길이 1]! =리스트 [길이, 새로운리스트로 푸시 목록 [길이] 경우.

복잡성 : O (nlgn) + O (n)이

+0

배열의 최대 값과 최소값에 제한이 있으며 모든 값이 정수인 경우 O (n) 시간 복잡도로 해결할 수 있습니다. – shiva

1

나 자신을 도울 수 있다고해서, 여기에 자바 (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)); 
} 
+0

이것은 적절한 답변입니다. –

+0

고마워요! 그러나 그것은 교사가 원하는 것이 아닙니다. 다시 한 번 감사드립니다! – Hello

관련 문제