정렬 순서로 아직 정렬되지 않은 요소 만 이동하여 length(array) - length(longestIncreasingSubsequence(array))
배열을 정렬 할 수 있습니다.최소 이동 수로 배열 정렬
인덱스 A에서 요소를 제거하고 인덱스 B에 요소를 한 번에 하나씩 다시 삽입하면 정렬 된 배열로 끝나는 올바른 이동을 어떻게 생성 할 수 있습니까? 다시 말하지만, length(array) - length(longestIncreasingSubsequence(array))
움직임이 필요합니다.
[ 1, 8, 5, 2, 4, 6, 3, 9, 7, 10 ]
최장 증가 시퀀스이다 : 이러한 요소
[ 1, 2, 4, 6, 7, 10 ]
인덱스들은 :
[ 0, 3, 4, 5, 8, 9 ]
따라서 인덱스 예
여기 배열 인 우리는 이동해야합니다 :
[ 1, 2, 6, 7]
이는 이미 정렬 된 순서가 아닌 색인이기 때문입니다. 정렬 된 어레이로 끝날 위해서는
, 그 4 개 요소의 최종 인덱스이다 :
[ 7, 4, 2, 8]
그래서, 우리는 동시에 인덱스 4 인덱스 인덱스 7 인덱스 2 인덱스 1 이동해야 6을 인덱스 2에, 인덱스 7을 인덱스 8에 할당합니다. 문제는 요소가 이동 될 때 다른 요소가 이동되어 이후의 이동 작업이 무효화된다는 것입니다. 나는이 색인을 변형 시키려고 노력했지만, 지금까지 올바른 운동 목록을 찾지 못했습니다. 어떤 아이디어?
잘만 문제를 충분히 설명했습니다. 질문을하면 분명히 할 것입니다. 감사!
어떻게 변환 했습니까? 색인? '1 <> 7'을 바꾸면 '7'에 대한 모든 전방 참조를 '1'로 바꾸고 그 반대의 경우 '7 <> 8'은 '1 <> 8'이되고이 세 값은 정확한 위치. –