>  기사  >  웹 프론트엔드  >  js에서 두 개의 스택을 사용하여 대기열을 구현하는 알고리즘

js에서 두 개의 스택을 사용하여 대기열을 구현하는 알고리즘

不言
不言원래의
2018-07-21 10:59:511729검색

이 글은 js에서 큐를 구현하기 위해 두 개의 스택을 사용하는 알고리즘을 공유합니다. 내용이 매우 좋습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

문제 설명

두 개의 스택을 사용하여 대기열을 구현하고 대기열의 푸시 및 팝 작업을 완료합니다. 대기열의 요소는 int 유형입니다.

Analytic

두 개의 스택은 큐, 즉 하나의 인과 하나의 큐를 구현하며 질문에는 큐의 길이 제한이 언급되지 않습니다. 따라서 두 개의 스택 s1과 s2에 대해 주목해야 할 두 가지 사항이 있습니다.

  • s1.push, s2가 비어 있지 않고 s1 비어 있습니다. 올바른 순서를 보장하려면 s2의 모든 요소를 ​​s1에 반환한 다음 s1.push

  • s2.pop(s2가 비어 있고 s1인 경우) 올바른 순서를 보장하려면 s1의 모든 요소를 ​​s2에 넣은 다음 s2.pop

코드 구현#🎜 🎜#
var s1 = [], s2 = [];
function transferStack(a, b) {
    while(a.length !== 0){
        b.push(a.pop());
    }
}
function push(val) {
    if(s1.length === 0 && s2.length !== 0){
        transferStack(s2, s1);
    }

    s1.push(val);
}

function pop(){
    if(s1.length !== 0 && s2.length === 0){
        transferStack(s1, s2);
    }

    return s2.pop();
}

관련 권장 사항:


jQuery에서 $() 함수를 사용하는 방법#🎜 🎜 #

js는 이진 트리 재구성을 위한 알고리즘 분석을 구현합니다

위 내용은 js에서 두 개의 스택을 사용하여 대기열을 구현하는 알고리즘의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.