검지 Offer-JZ 63-데이터 흐름 의 중위 수
어떻게 데이터 흐름 중의 중위 수 를 얻 습 니까?데이터 흐름 에서 홀수 수 수 치 를 읽 으 면 중위 수 는 모든 수치 가 정렬 된 후에 중간 에 있 는 수치 입 니 다.데이터 흐름 에서 짝수 수 수 치 를 읽 으 면 중위 수 는 모든 수치 가 정렬 된 후 중간 두 수의 평균 값 이다.저 희 는 Insert()방법 으로 데이터 흐름 을 읽 고 GetMedian()방법 으로 현재 읽 기 데이터 의 중위 수 를 가 져 옵 니 다.
문제 풀이 의 사고 방향.
데 이 터 를 입력 할 때 큰 뿌리 더미 와 작은 뿌리 더 미 를 유지 하고 큰 뿌리 더미 의 데이터 가 작은 뿌리 더미 의 데이터 보다 작 으 며 작은 뿌리 더미 의 데이터 수가 큰 뿌리 더미 의 데이터 보다 1 이상 많 거나 같 도록 확보한다.중위 수 를 가 져 올 때 크기 의 루트 더미 꼭대기 의 데이터 값 과 크기 의 루트 더미 의 데이터 수 를 통 해 중위 수 를 계산 할 수 있다.
코드 구현
class Solution {
private:
priority_queue<int, vector<int>, less<int>> pqL;
priority_queue<int, vector<int>, greater<int>> pqG;
public:
void Insert(int num)
{
if(pqL.empty() || num <= pqL.top())
pqL.push(num);
else // pqL num pqL
pqG.push(num);
// pqL pqG 1
if(pqL.size() == pqG.size() + 2){
pqG.push(pqL.top());
pqL.pop();
}
if(pqL.size() == pqG.size() - 1){
pqL.push(pqG.top());
pqG.pop();
}
}
double GetMedian()
{
return pqL.size() == pqG.size() ? (pqL.top() + pqG.top()) / 2.0 : pqL.top();
}
};
실행 결과
실행 시간:2ms 메모리 사용량:376 k
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
\ # 데이터 구조 와 알고리즘 학습 노트 \ # 검 지 제공 42: 단어 순 서 를 뒤 집기 + 테스트 사례 (자바, C / C +)2019.1.2 검 지 Offer 는 제로 브러시 개인 노트 정리 (66 문제 전) 디 렉 터 리 전송 문 에서 인터넷 에 서 는 원 서 를 포함 한 많은 방법 이 문장 을 두 번 뒤 집 는 것 이다. 첫 번...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.