美文网首页
2019-07-11—栈

2019-07-11—栈

作者: ElfACCC | 来源:发表于2019-07-11 21:24 被阅读0次

栈:Java数据结构和算法(四)——栈

string和char一般这么转化:

    String str = "12<a[b{c}]>";
    char[] cha = str.toCharArray();
    for(char c : cha){}
    char ch = stack.pop().toString().toCharArray()[0];

21、定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

import java.util.Stack;

public class Solution {
    
    Stack<Integer> stack1 = new Stack<>();
    Stack<Integer> stack2 = new Stack<>();
    
    public void push(int node) {
        stack1.push(node);
        if(stack2.isEmpty()){
            stack2.push(node);
        }else{
            if(stack2.peek() > node){
                stack2.push(node);
            }
        }
    }
    
    public void pop() {
        int i = stack1.pop();
        if(i == stack2.peek()){
            stack2.pop();
        }
    }
    
    public int top() {
        return stack1.peek();
    }
    
    public int min() {
        return stack2.peek();
    }
}

思路:用两个栈,第二个栈存min。栈的函数:

Stack<Integr> stack1 = new Stack<>();
stack1.pop();
stack1.push();
stack1.isEmpty();
stack1.peek();

22.输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
做法一:(不用stack。。用数组)

import java.util.ArrayList;

public class Solution {
    public boolean IsPopOrder(int [] pushA,int [] popA) {
        int len = pushA.length;
        int index = -1;
        int num1 = popA[0];
        if(len == 1){
            if(pushA[0] == popA[0]){
                return true;
            }else{
                return false;
            }
        }
        for(int i : pushA){
            index ++;
            if(i == num1){
                break;
            }
        }
        for(int j=1; j<len; j++){
            for(int k=index-1; k>=0; k--){
                if(popA[j] == pushA[k]){
                    while(j < len && k >= 0){
                        if(j == len-1 && k == 0){
                            return true;
                        }else if(k == 0 || j >= len-1){
                            return false;
                        }else{
                            j++;
                            k--;
                            while(j<len){
                                if(popA[j] != pushA[k]){
                                    j++;
                                }else{
                                    break;
                                }
                             }
                        }
                    }
                }
            }
        }
        return false;
    }
}

做法二:(用栈)

import java.util.ArrayList;
import java.util.Stack;

public class Solution {
    public boolean IsPopOrder(int [] pushA,int [] popA) {
        int len = pushA.length;
        if(len == 1){
            if(pushA[0]==popA[0]){
                return true;
            }else{
                return false;
            }
        }
        Stack<Integer> stack = new Stack<>();
        int index = 0;
        for(int i : pushA){
            stack.push(i);
            while(!stack.isEmpty() && stack.peek() == popA[index]){
                stack.pop();
                index++;
            }
        }
        return stack.isEmpty();
    }
}

相关文章

  • 2019-07-11—栈

    栈:Java数据结构和算法(四)——栈 string和char一般这么转化: 21、定义栈的数据结构,请在该类型中...

  • 2019-07-13

    2019-07-11 2019-07-11 感恩 1.感恩父母养育之恩 2.感恩我还健康的活着 3.感谢老公每天辛...

  • Lan的ScalersTalk第四轮新概念朗读持续力训练Day

    练习材料: [Day 1749 2019-07-11] Lesson 19-3 The stuff of drea...

  • 如何开启常驻线程

    2019-07-11 15:13:13.212408+0800 信号量[4091:635063] 12019-07...

  • 2019-07-11 LeetCode

    2019-07-11 414 第三大的数219 存在重复元素II

  • 30天,痛并快乐着

    静的大作业 13807454086 字数 15324 · 阅读 0 2019-07-11 21:48 今天是训练营...

  • 《千字文》

    2019-07-11 《千字文》学习 原文: 天地玄黄(tiān dì xuán huáng), 宇宙洪荒(yǔ ...

  • 文先森的日常

    ... 日精进打卡第344天 姓名:李文杰 (四爷); 公司:中国太平人寿; 日期:2019-07-11 【知~学...

  • 生活要整理

    时间:2019-07-11 14:32 周四 地点:吉林市船营区 天气:晴朗 心情:多情 今日关键字:未来 ...

  • 【®感恩日记第1169篇》 - 夏令营第4天

    2019-07-11 读经人: 妈妈,冲冲 读经内容:《老子:71-81》《孟子:公孙丑章句上02》《笠翁对韵~十...

网友评论

      本文标题:2019-07-11—栈

      本文链接:https://www.haomeiwen.com/subject/piarkctx.html