배열의 시작 부분부터 시작합니다. 우리는 1을 만났습니다 - 우리는 처음부터 사본에 쓰고 3을 만났습니다 - 우리는 끝에서 시작하여 사본에 씁니다.
사본이 없는 경우(그렇지 않으면 사본을 작성하는 것이 별도의 패스라고 합니다)
n=0, m=0
배열의 시작 부분부터 시작합니다. 우리는 1을 만났습니다 - 배열의 시작 부분에서 n 번째 요소로 변경합니다. 1과 같지 않습니다(구성상 항상 2가 됨), n++, 3을 만났을 경우 - m 번째 요소로 변경 끝에서, 3과 같지 않음, m++, 그리고 교체하려면 1이 있으면 첫 번째 부분에 표시된 작업을 수행합니다.
배열의 시작 부분부터 시작합니다. 우리는 1을 만났습니다 - 우리는 배열의 시작 부분에서 n 번째 요소로 변경합니다. 1이 아닌 1 (구성상 항상 2가 됨), n ++, 3을 만났을 때 - 끝에서 m 번째로 변경합니다. 3, m++와 같으며 1을 대체하려면 첫 번째 부분에 표시된 작업을 수행합니다.
배열의 시작 부분부터 시작합니다. 우리는 1을 만났습니다 - 배열의 시작 부분에서 n 번째 요소로 변경합니다. 1과 같지 않습니다(구성상 항상 2가 됨), n++, 3을 만났을 경우 - m 번째 요소로 변경 끝에서, 3과 같지 않음, m++, 그리고 교체하려면 1이 있으면 첫 번째 부분에 표시된 작업을 수행합니다.
배열의 시작 부분부터 시작합니다. 우리는 1을 만났습니다 - 배열의 시작 부분에서 n 번째 요소로 변경합니다. 1과 같지 않습니다(구성상 항상 2가 됨), n++, 3을 만났을 경우 - m 번째 요소로 변경 끝에서, 3과 같지 않음, m++, 그리고 교체하려면 1이 있으면 첫 번째 부분에 표시된 작업을 수행합니다.
한 번에:
같은 크기의 배열의 빈 복사본을 만들고 2로 초기화합니다.
배열의 시작 부분부터 시작합니다. 우리는 1을 만났습니다 - 우리는 처음부터 사본에 쓰고 3을 만났습니다 - 우리는 끝에서 시작하여 사본에 씁니다.
또한 세 개의 포인터를 동시에 추적해야 합니다!
문제를 드리겠습니다.
보얀은 물론이지만 인터뷰에서 지식의 신조로 배열을 정렬))
그래서 정렬 문제
1, 2 및 3이 임의의 순서로 배치된 N 셀의 배열이 있습니다.
가장 최적의 정렬 알고리즘을 구축합니다.
한 번의 패스로 계산하고 두 번째 패스 에서 배열을 채웁니다 .
한 번에:
같은 크기의 배열의 빈 복사본을 만들고 2로 초기화합니다.
배열의 시작 부분부터 시작합니다. 우리는 1을 만났습니다 - 우리는 처음부터 사본에 쓰고 3을 만났습니다 - 우리는 끝에서 시작하여 사본에 씁니다.
사본이 없는 경우(그렇지 않으면 사본을 작성하는 것이 별도의 패스라고 합니다)
n=0, m=0
배열의 시작 부분부터 시작합니다. 우리는 1을 만났습니다 - 배열의 시작 부분에서 n 번째 요소로 변경합니다. 1과 같지 않습니다(구성상 항상 2가 됨), n++, 3을 만났을 경우 - m 번째 요소로 변경 끝에서, 3과 같지 않음, m++, 그리고 교체하려면 1이 있으면 첫 번째 부분에 표시된 작업을 수행합니다.
사본이 없는 경우(그렇지 않으면 사본을 작성하는 것이 별도의 패스라고 합니다)
n=0, m=0
배열의 시작 부분부터 시작합니다. 우리는 1을 만났습니다 - 우리는 배열의 시작 부분에서 n 번째 요소로 변경합니다. 1이 아닌 1 (구성상 항상 2가 됨), n ++, 3을 만났을 때 - 끝에서 m 번째로 변경합니다. 3, m++와 같으며 1을 대체하려면 첫 번째 부분에 표시된 작업을 수행합니다.
사본이 없는 경우(그렇지 않으면 사본을 작성하는 것이 별도의 패스라고 합니다)
n=0, m=0
배열의 시작 부분부터 시작합니다. 우리는 1을 만났습니다 - 배열의 시작 부분에서 n 번째 요소로 변경합니다. 1과 같지 않습니다(구성상 항상 2가 됨), n++, 3을 만났을 경우 - m 번째 요소로 변경 끝에서, 3과 같지 않음, m++, 그리고 교체하려면 1이 있으면 첫 번째 부분에 표시된 작업을 수행합니다.
좋은 방법.
패스 수를 줄인다고 해서 항상 속도가 빨라지는 것은 아닙니다.
A+B=...
사본이 없는 경우(그렇지 않으면 사본을 작성하는 것이 별도의 패스라고 합니다)
n=0, m=0
배열의 시작 부분부터 시작합니다. 우리는 1을 만났습니다 - 배열의 시작 부분에서 n 번째 요소로 변경합니다. 1과 같지 않습니다(구성상 항상 2가 됨), n++, 3을 만났을 경우 - m 번째 요소로 변경 끝에서, 3과 같지 않음, m++, 그리고 교체하려면 1이 있으면 첫 번째 부분에 표시된 작업을 수행합니다.
좋은 생각.