코딩 경쟁에서이 puzzle
질문 [related to data structure
]에 직면했습니다.데이터 구조에 대한 퍼즐
나무의 행성이 있습니다 (실제 나무는 나무 데이터 구조가 아닙니다 !!). 수십억 그루의 나무가 있습니다. 임금은 탄소 연대 측정을 사용하여 모든 나무의 연령대 (년 및 정수)의 중앙값을 찾도록 명령합니다. (Method does not matter.
) 참고 : 중앙값은 정렬 된 숫자 목록의 "중간 숫자"입니다.
제약은 :
1.
가장 오래된 나무 2000 살 것으로 알려져있다.
2.
그들은 무한대부터 + 무한대까지의 정수를 저장할 수있는 단일 기계를 가지고 있습니다.
3.
그러나 한 번에 메모리에 저장할 수있는 정수의 수는 1 백만 개입니다.
그래서, 다음에 저장하기 위해 100 만 개의 정수를 저장하면 이미 저장된 정수를 삭제해야합니다.
어쨌든 그들은 나무의 나이를 세면서 가면서 중앙값을 추적해야합니다.
어떻게 할 수 있습니까?
내 접근
를 사용하여 외부 종류의 변종은 파일에 쓰기 & 덩어리의 나이를 정렬합니다.
k-way 병합 적용 [청크 용].
위 접근법의 문제점은 파일을 두 번 스캔해야한다는 것입니다. 나는 The oldest tree is known to be 2000 years old.
우리가 count array
[as range of ages of tree is fixed
] 걸릴 수 없습니다 정보를 사용 다른 접근 방식의
생각 할 수 있습니까?
알고 싶습니다. 더 좋은 방법이 있습니까?
우리가 파일에 데이터를 저장하는 데 필요하지 않는 방법이 존재 하는가? [where only main memory is sufficient?
]
[Huffman Coding] (http://en.wikipedia.org/wiki/Huffman_coding) – lllluuukke
Gödel 인코딩을 사용하여 하나의 메모리 위치에 모든 나무의 나이를 저장하는 것이 바람기인가요? – Ishtar
아니요, 더 좋은 아이디어는 인정 받고 있습니다. –