• 剑指offer-栈的压入、弹出序列


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

    思路:如果弹出序列4,则因为压入顺序是1234,所以在4的弹出序列后321肯定是按这样的顺序的,利用map存储本身和它压入的顺序序号,遍历弹出顺序进行判断。

    ac代码:

     1 import java.util.ArrayList;
     2 import java.util.HashMap;
     3 import java.util.List;
     4 import java.util.Map;
     5 public class Solution {
     6     public boolean IsPopOrder(int [] pushA,int [] popA) {
     7         if(pushA.length!=popA.length)
     8             return false;
     9       Map<Integer,Integer>map=new HashMap<Integer,Integer>();
    10         for(int i=0;i<pushA.length;i++){
    11             map.put(pushA[i],i);
    12         }
    13         for(int i=0;i<popA.length;i++){
    14             if(map.get(popA[i])==null)
    15                 return false;
    16         }
    17         boolean flag1=true;
    18         for(int i=0;i<popA.length;i++){
    19             int x=popA[i];
    20             int k=map.get(x);
    21             int min=k;
    22             
    23             for(int j=i+1;j<popA.length;j++){
    24                 if(map.get(popA[j])<k){
    25                     if(map.get(popA[j])<min)
    26                         min=map.get(popA[j]);
    27                     else{
    28                         return false;
    29                         
    30                     }
    31                 }
    32             }
    33             
    34             }
    35             
    36         return flag1;
    37     }
    38 }
  • 相关阅读:
    InitializingBean
    执行jar的记事本
    vue中$forceUpdate()事件
    帆软时间检索限制90天
    vue清楚子组件v-model绑定的值
    Intellij IDEA中启动多个微服务(开启Run Dashboard管理)
    Java将CST的时间字符串转换成需要的日期格式字符串
    axios发送命令如何实现同步
    利用tomcat启动web前端
    vue生命周期
  • 原文地址:https://www.cnblogs.com/llsq/p/8796426.html
Copyright © 2020-2023  润新知