当前位置: 首页 > news >正文

最具价值的网站建设商业策划公司十大公司

最具价值的网站建设,商业策划公司十大公司,宁波seo关键词优化教程,所有网站的名字大全目录 一、栈的概念 二、栈的基本方法 三、栈的模拟实现 四、栈的练习 1、括号匹配 2、出栈入栈次序匹配 一、栈的概念 栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底…

目录

一、栈的概念

二、栈的基本方法

三、栈的模拟实现 

四、栈的练习

1、括号匹配  

 2、出栈入栈次序匹配


一、栈的概念

栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。其特点是数据元素先进后出(先入栈的元素后出栈)

 入栈与出栈:

入栈:栈的插入操作叫做进栈/压栈/入栈。入数据在栈顶。

出栈:栈的删除操作叫做出栈。出数据在栈顶。

还不太理解的小伙伴可以看看以下图示:

 

 

二、栈的基本方法

 栈的基本方法有:push()(入栈)、pop()(出栈)、peek()(获取栈顶元素,不删除)、empty()(判断栈是否为空)

三、栈的模拟实现 

 以下的代码我们默认数据元素是整型。

import java.util.Arrays;public class MyStack {public int[] elem;//存放数据的数组public int usedSize;//当前数据的个数public MyStack() {elem=new int[10];}//入栈public void push(int val){if(isFull()){//满了就扩容elem= Arrays.copyOf(elem,elem.length*2);}elem[usedSize]=val;usedSize++;}//判断栈是否满了private boolean isFull(){return elem.length==usedSize;}//出栈public int pop(){if(isEmpty()){return -1;}int getVal=elem[usedSize-1];usedSize--;return getVal;}//判断栈是否为空public boolean isEmpty(){return usedSize==0;}//获取栈顶元素,不删除public int peek(){if(isEmpty()){return -1;}return elem[usedSize-1];}
}

四、栈的练习

1、括号匹配  

 20. 有效的括号 - 力扣(LeetCode)

题目要求如下: 

 

 解题思路:先创建一个字符类型的栈,再遍历字符串,如果是左括号就入栈,如果是右括号,就看是否与栈顶元素匹配,不匹配返回false,遍历结束后看栈是否为空,不为空则返回false(这是为了防止类似于"(((("的情况出现)。

class Solution {public boolean isValid(String s) {Stack<Character> stack=new Stack<>();//创建一个字符类型的栈for(int i=0;i<s.length();i++){char ch=s.charAt(i);//获取i下标字符if(ch=='('||ch=='{'||ch=='['){//如果是左符号,入栈stack.push(ch);}else{if(stack.empty()){//判断栈是否为空,为空则返回falsereturn false;}char loop=stack.peek();//判断左右是否匹配,若不匹配则返回false,否则栈顶元素出栈if(loop=='('&&ch==')'||loop=='['&&ch==']'||loop=='{'&&ch=='}'){stack.pop();}else{return false;}}}//遍历结束后看栈是否为空,不为空则返回false(这是为了防止类似于"(((("的情况出现)if(!stack.empty()){return false;}return true;}
}

 2、出栈入栈次序匹配

栈的压入、弹出序列_牛客题霸_牛客网

题目要求如下: 

 

解题思路:创建一个整型栈,遍历pushV,对每个元素进行入栈操作,再创建一个循环,判断该元素是否与popV[j]相等,若相等则出栈,移动j下标,当遍历完pushV后,若栈空,则匹配,反之不匹配。

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param pushV int整型一维数组 * @param popV int整型一维数组 * @return bool布尔型*/public boolean IsPopOrder (int[] pushV, int[] popV) {// write code hereStack<Integer> stack=new Stack<>();//创建一个整型栈int j=0;for(int i=0;i<pushV.length;i++){//遍历pushVstack.push(pushV[i]);//入栈//如果栈顶元素与popV[j]相等,出栈,移动j下标while(j<popV.length&&!stack.empty()&&popV[j]==stack.peek()){stack.pop();j++;}}return stack.empty();}
}

以上便是本篇文章的全部内容,感谢各位看官支持~~~

http://www.dtcms.com/a/561042.html

相关文章:

  • 网站开发设计公东莞智通人才招聘网官网
  • 【BFS 解决FloodFill 算法】3. 岛屿的最⼤⾯积(medium)
  • 【JUnit实战3_23】 第十四章:JUnit 5 扩展模型(Extension API)实战(上)
  • python_study--week3
  • 【Excalidraw】简洁好看的超轻量级画图白板
  • 手写Autosar架构的CAN通讯协议栈2(CanIf模块详解-上)
  • 【Agentic RL 专题】三、深入浅出强化学习算法 TRPO 和PPO
  • 中国最好的建站公司毕业设计模板
  • 《算法通关指南:数据结构和算法篇 --- 栈相关算法题》--- 1. 【模板】栈,2.有效的括号
  • 高效管理搜索历史:Vue持久化实践
  • html网站架设目录和文章wordpress
  • Rust 编程语言基础知识全面介绍
  • 洛龙区网站制作建设费用做网站一般用什么语言
  • 计算机网络---基础诊断ping
  • 13.2.2.Nginx
  • java后端学习经验分享(大三进大厂版)
  • 好用的镜像源
  • 做网站的经验有什么好的加盟店项目
  • linux-shell-基础与变量和运算符-1
  • 论文解读:Sleeping with One Eye Open: Fast, Sustainable Storage with Sandman
  • 手机客户端网站建设腾讯云服务器免费领取
  • Gorm(十三)主从表的判断
  • 从零开始的云原生之旅(十):HPA 完全指南:从原理到实践
  • 注册网站费属于什么费用模板公司
  • MYSQL-多种方法安装部署
  • 做网站要学哪些代码上海资本公司排名
  • 认识多线程:单例模式
  • 深入解析 HarmonyOS 中 NavDestination 导航目标页的生命周期
  • 3、webgl 基本概念 + 绘制线段 + 绘制三角形
  • 【LeetCode热题100(58/100)】单词搜索