>source

이것은 한 번에 해결해야 하는 일반적인 문제입니다. 0, 1, 2만 포함하는 배열이 제공됩니다. O(1) 보조 공간에서 배열을 한 번에 정렬해야 합니다. 더 많은 수의 고유 값을 포함하는 배열에 대해 이러한 원 패스 솔루션이 존재하는지, 그리고 원 패스 솔루션이 존재할 때까지 고유 값 수의 제한은 무엇인지 궁금합니다.

모든 고정 숫자는 O(1)입니다. 0으로 초기화된 각 고유 값에 대한 카운터가 필요합니다. 그것들을 사용하여 입력의 값을 계산한 다음 값의 많은 복사본을 출력하는 데 사용합니다.

jasonharper2022-01-05 00:06:14

@jasonharper: 카운터는 입력 크기까지 셀 수 있을 만큼 충분히 커야 하므로 실제로 O(log n) 공간이 필요합니다...

Chris Dodd2022-01-05 00:06:14

@ChrisDodd 이 복잡성 규칙을 사용하면 루프 인덱스 자체에 이미 O(log n) 공간이 필요합니다. 같은 규칙에 따라 두 정수를 더하는 것도 O(log n)입니다.

Raymond Chen2022-01-05 00:06:14

@RaymondChen 나는 다르게 구걸한다. 두 개의 정수를 더하는 것은 O(n)입니다. 여기서 n은 입력의 길이입니다.

Stef2022-01-04 15:43:53

3개의 값 0,1,2에 대한 솔루션을 k 값 0,1,...,k-1로 쉽게 확장할 수 있습니다. 이것은 O(k) 공간 솔루션을 제공합니다. k= O(1)이면 이 O(k) 공간 솔루션은 O(1) 공간 솔루션입니다.

Stef2022-01-04 15:45:59
  • 이전 Arduino -vs code에서 스케치 업로드에 실패했지만 Arduino IDE OK
  • 다음 java : 동적 배열을 효율적으로 정렬하는 방법