Java에서 배열의 순서를 유지하는 배열의 끝으로 모든 0을 이동하는 방법은 무엇입니까? [2가지 방법]

게시 됨: 2020-12-31
Java에서 배열의 순서를 유지하는 배열의 끝으로 모든 0을 이동하는 방법은 무엇입니까? [2가지 방법]

나는 다양한 조합의 다른 인터뷰에서 moving all 0's to end 문제를 가지고 놀고 있습니다. 때로는 모든 0을 배열 앞으로 이동하도록 요청하고 데이터 구조 없이 배열을 정렬하는 등의 작업을 수행합니다.

이 튜토리얼에서는 배열의 순서를 유지하기 위해 모든 0을 이동하는 간단한 예를 살펴보겠습니다. 두 가지 접근 방식이 있습니다.

접근법-1)

QuickSort 파티셔닝 로직. 피벗포인트란?

  • Pivot point 는 빠른 정렬 알고리즘의 핵심 요소입니다. 피벗 포인트를 중심으로 컬렉션을 수행하고 분할합니다.
  • 피벗보다 큰 Array 요소가 앞에 있고 피벗보다 큰 요소가 뒤에 배열됩니다.
  • 루프를 계속 진행하여 배열 정렬

논리는 매우 간단합니다.

  • 배열을 반복합니다.
  • array[i]가 0이 아니면 현재 인덱스로 교체합니다.
  • array[i] == 0이면 루프를 건너뛰십시오.
  • 우리의 경우 0 is a Pivot point 입니다.
  • 0을 찾을 때마다 카운터 피벗이 증가하고 요소가 피벗 포인트보다 먼저 이동합니다.

접근법-2)

  • 동일한 크기의 새 배열 생성
  • 배열을 반복하고 0 추가 건너뛰기

다음은 완전한 프로그램입니다.

CrunchifyMoveAll0ToEnd.java

Eclipse 콘솔 출력:

이 문제를 해결하는 더 좋은 방법을 알고 있으면 알려주십시오. 당신의 생각을 듣고 싶습니다.