当前位置: 首页 > Web前端 > JavaScript

Javascript刷LeetCode获取offer-stack相关题目_0

时间:2023-03-26 20:34:35 JavaScript

??1.什么是堆栈?先进后出的数据结构;JavaScript没有堆栈结构;可以用数组来实现栈push(x)的功能;pop();conststack=[];//入栈stack.push(1);stack.push(2);//出栈constitem1=stack.pop();constitem2=stack.pop();2.在什么场景下使用栈的后进先出结构。2.1十进制转二进制:最后的余数要倒过来输出才是正确的二进制;相反,后面出来的余数必须放在前面,余数依次入栈,然后出栈,余数可以反向输出。2.2判断括号是否合法:左括号入栈,右括号出栈,栈为空;左括号越靠下,对应的右括号越靠前。Legal2.3函数调用栈:最后调用的函数最先执行;最后调用的函数最先执行。JS解释器使用栈来控制函数调用的顺序。3.leetcode:20.Validparenthesesvalid-parentheses参考视频:传送门3.1解题思路对于未闭合的左括号,离左括号越近,对应的右括号也越近。输入:"{[]}"输出:true3.2解题步骤新建栈扫描字符串,将左括号入栈,遇到匹配类型的右括号弹出栈上面的括号。如果类型不匹配,则直接判断为非法/***@param{string}s*@return{boolean}*/varisValid=function(s){if(s.length%2===1){返回假}常量堆栈=[];for(leti=0;i{func2();};constfunc2=()=>{func3();};constfunc3=()=>{};func1();5.LeetCode:144.二叉树的前序遍历在学这道题之前,你必须先了解什么是二叉树~~进阶:递归算法很简单,你能通过一个迭代算法完成吗?5.1使用栈模拟递归,重写递归/***定义为一个二叉树节点。*functionTreeNode(val,left,right){*this.val=(val===undefined?0:val)*this.left=(left===undefined?null:left)*this.right=(right===undefined?null:right)*}*//***@param{TreeNode}root*@return{number[]}*/varpreorderTraversal=function(root){constres=[];常量堆栈=[];if(root)stack.push(root)while(stack.length){constn=stack.pop();水库push(n.val)if(n.right)stack.push(n.right)if(n.left)stack.push(n.left)}returnres};6.栈——总结栈是一种后进先出的数据结构,JavaScript没有栈结构;可以用数组来实现栈的功能。常用栈操作:push(x);,流行音乐();最后一个元素stack[stack.length-1]