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

7月11日学习打卡,数据结构栈

大家好呀,本博客目的在于记录暑假学习打卡,后续会整理成一个专栏,主要打算在暑假学习完数据结构,因此会发一些相关的数据结构实现的博客和一些刷的题,个人学习使用,也希望大家多多支持,有不足之处也请指出,谢谢大家。

一,力扣115,最小栈

. - 力扣(LeetCode)

简单用数组模拟一个栈即可,不过我这里图省事运行速度不太高,优化空间很大

class MinStack {int[] el;int numsize;public MinStack() {el = new int[10000];int numsize = 0;}// private void grow(){// this.el=Arrays.copyof(el,2*el.lenth);// }public void push(int val) {// if (el.lenth == numsize) {// grow();// }el[numsize] = val;numsize++;}public int pop() {if (empty())return -1;return el[--numsize];}public int top() {return el[numsize - 1];}private boolean empty() {return numsize == 0;}public int getMin() {int num = el[0];for (int i = 0; i < numsize; i++) {if (el[i] < num)num = el[i];}return num;}
}/*** Your MinStack object will be instantiated and called as such:* MinStack obj = new MinStack();* obj.push(val);* obj.pop();* int param_3 = obj.top();* int param_4 = obj.getMin();*/

二,杨辉三角

. - 力扣(LeetCode)

分析:为了因用前面学习过的顺序表,这题我们采用顺序表解决,用顺序表模拟一个二维数组,注意顺序表模拟的二维数组不能简单通过下标访问元素

class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> ret=new ArrayList<>();List<Integer> list=new ArrayList<>();list.add(1);ret.add(list);for(int i=1;i<numRows;i++){List<Integer> row=new ArrayList<>();row.add(1);List<Integer> a= ret.get(i-1);for (int j = 1; j < i; j++) {int val1=a.get(j);int val2=a.get(j-1);row.add(val1+val2);}row.add(1);ret.add(row);}return ret;}
}

三,力扣150,逆波兰表达式求值

注:波兰表达式是一种能被计算机理解的式子

. - 力扣(LeetCode)

思路:遍历数组,先判断字符串是否是数字,如果是数字,则转化为数字进栈,否则,取出两个操作数,按照操作符用后取出的“+”“-”“*”或“/”后一个,最后栈里剩的便是最终答案

class Solution {public int evalRPN(String[] tokens) {Stack<Integer> st = new Stack();for (int i = 0; i < tokens.length; i++) {String str = tokens[i];if (o(str) == false) {int val = Integer.parseInt(str);st.push(val);} else {int val1 = st.pop();int val2 = st.pop();switch (str) {case "+":st.push(val2+val1);break;case "-":st.push(val2-val1);break;case "*":st.push(val2*val1);break;case "/":st.push(val2/val1);break;}}}return st.peek();}private boolean o (String s){if (s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/")) {return true;}return false;}}

本期博客就到这里,谢谢大家

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vue3项目打包的时候,怎么区别测试环境,和本地环境
  • 代码随想录算法训练营第9天
  • 142. 两个字符串的最小 ASCII 删除总和(卡码网周赛第二十五期(23年B站笔试真题))
  • java使用easypoi模版导出word详细步骤
  • 我被手机所伤,竟如此憔悴。
  • 假期笔记1:anaconda的安装与pycharm中的引用
  • Linux 程序卡死的特殊处理
  • 进度条提示-在python程序中使用避免我误以为挂掉了
  • 微服务的分布式事务解决方案
  • Linux 初识
  • 通过Arcgis从逐月平均气温数据中提取并计算年平均气温
  • springboot 操作mongo
  • 云计算渲染时代:选择Blender或KeyShot进行高效渲染
  • 第一关:Linux基础知识
  • easy-poi实现动态列(标题)、多sheet导出excel
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Laravel 中的一个后期静态绑定
  • MySQL几个简单SQL的优化
  • SOFAMosn配置模型
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 解析带emoji和链接的聊天系统消息
  • 区块链分支循环
  • 软件开发学习的5大技巧,你知道吗?
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 用 Swift 编写面向协议的视图
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 正则表达式小结
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 如何用纯 CSS 创作一个货车 loader
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #Lua:Lua调用C++生成的DLL库
  • #QT(智能家居界面-界面切换)
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (LeetCode 49)Anagrams
  • (NSDate) 时间 (time )比较
  • (ros//EnvironmentVariables)ros环境变量
  • (差分)胡桃爱原石
  • (待修改)PyG安装步骤
  • (南京观海微电子)——I3C协议介绍
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十三)Flink SQL
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)jQuery 基础
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .describe() python_Python-Win32com-Excel
  • .NET Core 和 .NET Framework 中的 MEF2
  • .Net 知识杂记
  • .netcore 获取appsettings
  • .NET程序员迈向卓越的必由之路
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [Apio2012]dispatching 左偏树