当前位置: 首页 > 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;}}

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

http://www.lryc.cn/news/398016.html

相关文章:

  • 数据结构第20节 快速排序以及优化
  • 3分钟理解超键、候选键、主键
  • Centos忘记密码,重置root密码
  • Android初学者书籍推荐
  • 安卓文件上传照片单张及多张照片上传实现
  • 小白学webgl合集-import.meta.url 和 new URL() bug
  • pico+unity3d开启彩色透视
  • python常用命令
  • 使用定时器消除抖动
  • IOS热门面试题一
  • 构建LangChain应用程序的示例代码:62、如何使用Oracle AI向量搜索和Langchain构建端到端的RAG(检索增强生成)pipeline
  • ffmpeg转换MP4为gif命令
  • kotlin Flow 学习指南 (三)最终篇
  • Memcached负载均衡:揭秘高效缓存分发策略
  • 【Python实战因果推断】31_双重差分2
  • ArcGIS中使用线快速构造成面的方法
  • Spring AOP的几种实现方式
  • 字节码编程bytebuddy之实现抽象类并并添加自定义注解
  • LLM-阿里云 DashVector + ModelScope 多模态向量化实时文本搜图实战总结
  • CentOS7安装部署git和gitlab
  • 《昇思25天学习打卡营第16天|基于MindNLP+MusicGen生成自己的个性化音乐》
  • 算法学习day10(贪心算法)
  • 卡尔曼滤波Kalman Filter零基础入门到实践(上部)
  • 力扣-dfs
  • keepalived高可用集群
  • 文献翻译与阅读《Integration Approaches for Heterogeneous Big Data: A Survey》
  • 应用最优化方法及MATLAB实现——第3章代码实现
  • django的增删改查,排序,分组等常用的ORM操作
  • Leetcode Java学习记录——树、二叉树、二叉搜索树
  • 华为HCIP Datacom H12-821 卷30