剑指Offer——栈的压入、弹出序列(JS实现) |刷题打卡

简介: 剑指Offer——栈的压入、弹出序列(JS实现) |刷题打卡

前言

掘金团队号上线,助你 Offer 临门! 点击 查看详情

题目描述

image.png

解题思路

  • 本题的思想在于想到模拟栈
  • 我们首先定义一个数组用来模拟栈
  • 从pushed数组的第一个元素开始进行入栈,如果该元素在popped数组的第一个元素,我们就将入栈的元素出栈,然后继续判断栈顶元素是否和popped数组指针指向的元素相同,相同则出栈。
  • 如果最后模拟栈的元素个数为零,则说明是栈的压入和弹出序列,反之则不是。

解题代码

var validateStackSequences = function (pushed, popped) {
    // 本题使用模拟栈的写法
    const stack = [];
    // 定义一个指向popped元素的指针
    let pointer = 0;
    for (let i = 0; i < pushed.length; i++) {
        stack.push(pushed[i]);
        if (popped[pointer] === pushed[i]) {
            stack.pop();
            pointer++;
        }
        if (pointer === popped.length) break;
        while (stack[stack.length-1] === popped[pointer]) {
            stack.pop();
            pointer++;
            if (pointer === popped.length) return true;
        }
    }
    while (stack.length !== 0) {
        if(stack[stack.length - 1] === popped[pointer]) {
            stack.pop();
            pointer++;
        } else {
            return false;
        }  
    }
    return true;
};

总结

  • 本题属于栈类型的问题。
  • 核心思路在于想到模拟栈的压入和弹出去对比popped的指针指向的元素,最后通过判断栈是否为空,来判断是否属于栈的压入和弹出。
相关文章
|
3天前
|
存储 前端开发 JavaScript
【Web 前端】JS中的栈和堆是什么?优缺点?
【4月更文挑战第22天】【Web 前端】JS中的栈和堆是什么?优缺点?
|
4天前
|
JavaScript 前端开发
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
|
8月前
|
JavaScript 前端开发
数据结构之栈-JavaScript实现栈的功能
数据结构之栈-JavaScript实现栈的功能
26 0
|
9月前
|
设计模式 JavaScript 前端开发
JavaScript的栈结构
想要代码更优雅,数据结构,设计模式跑不掉,今天走进栈结构!
83 0
JavaScript的栈结构
|
4月前
|
算法 JavaScript
JS算法-最长连续序列
JS算法-最长连续序列
|
10月前
|
存储 算法 JavaScript
JavaScript 中的数据结构与算法:数组、链表、栈、队列等
在JavaScript中,数据结构和算法是非常重要的主题,它们用于有效地组织和处理数据。下面介绍几种常见的数据结构和算法:
|
5月前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
24 0
|
5月前
|
JavaScript 前端开发 算法
在JavaScript中的栈数据结构(Stack )
JavaScript 中可以通过数组实现栈数据结构。栈是一种遵循后进先出(LIFO)原则的数据结构,它只允许在栈顶进行插入和删除操作。
41 0
|
10月前
|
存储 JavaScript 前端开发
前端 js 栈内存和堆内存 基本数据类型和复杂数据类型的区别?
前端 js 栈内存和堆内存 基本数据类型和复杂数据类型的区别?
72 0
|
3天前
|
存储 移动开发 JavaScript
学习javascript,前端知识精讲,助力你轻松掌握
学习javascript,前端知识精讲,助力你轻松掌握