8.31广联达笔试

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
//            int[] input = new int[n];
            //直接用队列
            Deque<Integer> dq = new LinkedList<>();
            for(int i =0;i < n;i++){
//                input[i] = sc.nextInt();
                dq.offer(sc.nextInt());
            }
            int[] output = new int[n];
            for(int j = 0;j < n;j++){
                output[j] = sc.nextInt();
            }
            //数组构建完成
            int count = 0;
            //建一个set存不匹配的元素,说明它加速了,后面遇到给它弹出队列
            Set<Integer> set = new HashSet<>();
            for(int k = 0;k < n;k++){
                if(!dq.isEmpty() && output[k] != dq.peekFirst()){
                    set.add(output[k]);
                }else if(!dq.isEmpty() && output[k] == dq.peekFirst()){
                    //说明同步了,顺序是对的,队首元素弹出
                    dq.pollFirst();
                    //然后判断,此时栈顶的元素是否在set中
                    while(set.contains(dq.peekFirst())){
                        count++;
                        dq.pollFirst();
                    }
                }
            }
            System.out.println(count);
        }
    }
全部评论
我就最怕笔试题
点赞 回复 分享
发布于 2022-09-02 16:24 陕西
楼主什么岗要考这个啊
点赞 回复 分享
发布于 2022-09-13 21:03 湖北

相关推荐

1 9 评论
分享
牛客网
牛客企业服务