27-75. 정렬 색상

주제 설명 :

와 배열을 지정해,  n 개의  빨간색, 흰색 또는 파란색으로 개체를 정렬 그들의  현재 위치에서  같은 색깔의 개체, 흰색 빨간색과 파란색 순서로 색상, 인접 너무.

여기, 우리는 정수 0, 1을 사용하며,이 각각 흰색, 빨간색과 파란색 색상을 나타냅니다.

참고 :이 문제에 대한 라이브러리의 정렬 기능을 사용한다고 가정하지 않습니다.

예:

입력 : [2,0,2,1,1,0] 
출력 [0,0,1,1,2,2]

후속 :

    • 오히려 똑바로 앞으로 솔루션은 계산 정렬을 사용하여 두 개의 패스 알고리즘이다.
      우선, 그때 그때의 0, 1과 2의 다음의 총 개수와 배열을 덮어의 0, 1, 그리고 2의 배열 카운트 수를 반복.
    • 당신은 하나의 패스 알고리즘은 일정한 공간을 사용하여 올 수 있을까요?

코드 구현 :

1  DEF sortColors (자기, nums)
 2      I = J = 0
 (3)      에 대한 K xrange (LEN (nums))
 (4)          V = nums [K]
 5          nums [K] = 2
 6          만약 V <2 :
 7              nums [ J]를 1 =
 8              J + = 1
 (9)          의 경우 브이 == 0 :
 10              nums를 [I] = 0
 (11)              I + = 1

 

추천

출처www.cnblogs.com/tbgatgb/p/11043147.html