题解 | 验证栈序列

验证栈序列

https://www.nowcoder.com/practice/d3178fe362dd4810b577c77c9e128fc5

//转变思路,从求具体元素的一样,到求长度一样就行。一个元素从inArr里入栈,直接while
//看sk里和outArr一样的元素,有就add到ls里,因为是while,一直有一直弹出
//最后看长度。
import java.util.*;
import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        int C=Integer.parseInt(br.readLine());
        for(int i=0;i<C;i++){
            int N=Integer.parseInt(br.readLine());
            Stack<Integer> sk= new Stack<>();
            String[] tempArr0=br.readLine().split(" ");
            int[] inArr=Arrays.copyOf(strToInt(tempArr0,N),N);
            String[] tempArr1=br.readLine().split(" ");
            int[] outArr=Arrays.copyOf(strToInt(tempArr1,N),N);
            int startOut=0;
            ArrayList<Integer> ls=new ArrayList<>();
            for(int j=0;j<N;j++){
                int A=inArr[j];
                sk.push(A);
                //原来A==outArr[startOut]
                while(!sk.empty()&&startOut<N&&sk.peek()==outArr[startOut]){
                    ls.add(A);
                    sk.pop();
                    startOut++;
                }
            }
            System.out.println(yesOrNo(outArr,ls));
        }
    }
    public static int[] strToInt(String[]arr,int N){
        int[] outArr=new int[N];
        for(int i=0;i<N;i++){
            outArr[i]=Integer.parseInt(arr[i]);
        }
        return outArr;
    }
    public static String yesOrNo(int[] outArr,ArrayList<Integer> ls){
        if(outArr.length==ls.size()){
            return "Yes";
        }else{
            return "No";
        }
    }
}

全部评论

相关推荐

暴杀流调参工作者:春招又试了一些岗位,现在投递很有意思,不仅要精心准备简历,投递官网还得把自己写的东西一条一条复制上去,阿里更是各个bu都有自己的官网,重复操作无数次,投完简历卡完学历了,又该写性格测评、能力测评,写完了又要写专业笔试,最近还有些公司搞了AI辅助编程笔试,有些还有AI面试,对着机器人话也听不明白录屏硬说,终于到了人工面试又要一二三四面,小组成员面主管面部门主管面hr面,次次都没出错机会,稍有不慎就是挂。 卡学历卡项目卡论文卡实习什么都卡,没有不卡的😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务