[leetcode] 검 지 Offer 09. 두 스 택 으로 대기 열 (yong - liang - ge - zhan - shi - xian - du - li - lcof) (데이터 구조) [간단]
https://leetcode-cn.com/problems/kth-largest-element-in-an-array/
시간 을 소모 하 다
문제 풀이: 10 min 문제 풀이: 9 min
제목
두 개의 창고 로 하나의 대열 을 실현 하 다.대기 열의 성명 은 다음 과 같 습 니 다. 두 함수 appendTail 과 deleteHead 를 실현 하여 각각 대기 열 끝 에 정 수 를 삽입 하고 대기 열 머리 에 정 수 를 삭제 하 는 기능 을 완성 하 십시오.(대기 열 에 요소 가 없 으 면 deleteHead 작업 반환 - 1)
사고의 방향
스 택 두 개, st1 과 st2 를 설정 합 니 다.입대 시 원 소 를 st1 에 직접 넣는다.팀 을 나 갈 때 먼저 st2 가 비어 있 는 지, 비어 있 으 면 st1 의 요소 순 서 를 st2 에 넣 으 면 st2 에서 정상 적 인 순서 로 스 택 을 나 갈 수 있 습 니 다.st2 가 비어 있 지 않 으 면 st2 스 택 상단 요 소 를 바로 꺼 내 면 됩 니 다.PS: 팀 을 나 갈 때 st2 가 비어 있 을 때 st1 이 비어 있 는 지 확인 하 는 것 을 잊 지 마 세 요. st1 도 비어 있 으 면 대기 열 에 요소 가 없 음 을 설명 합 니 다. - 1 로 돌아 가 야 합 니 다.
AC 코드
class CQueue {
public:
stack<int> st1, st2;
CQueue() {
while(!st1.empty()) {
st1.pop();
}
while(!st2.empty()) {
st2.pop();
}
}
void appendTail(int value) {
st1.push(value);
}
int deleteHead() {
if(st2.empty()) {
if(st1.empty()) return -1;
while(!st1.empty()) {
st2.push(st1.top());
st1.pop();
}
}
int ans = st2.top();
st2.pop();
return ans;
}
};
/**
* Your CQueue object will be instantiated and called as such:
* CQueue* obj = new CQueue();
* obj->appendTail(value);
* int param_2 = obj->deleteHead();
*/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
0부터 시작하는 LeetCode Day8 「1302. Deepest Leaves Sum」해외에서는 엔지니어의 면접에 있어서 코딩 테스트라고 하는 것이 행해지는 것 같고, 많은 경우, 특정의 함수나 클래스를 주제에 따라 실장한다고 하는 것이 메인이다. 빠른 이야기가 본고장에서도 행해지고 있는 것 같은 코...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.