주제 설명 :
와 배열을 지정해, 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