zoukankan      html  css  js  c++  java
  • 360笔试 2020 8 22 编程第二题

    题目意思:

    输入N,M。

    N表示,有一个序列,1,2,3,4,5...N(N为偶数,但是测试样例好像有奇数TAT...下面的代码也没有过,只是提供一个思路

    M表示接下来输入M个数字,输入的数字只能是1,2

    1 表示将序列首元素插入序列尾部

    2 表示将序列上将奇偶位置上的元素对调

    样例

    4 3

    1 2 1

    解释{1,2,3,4} -> {2,3,4,1} ->{3,2,1,4} -> {2,1,3,4}

    思路:用两个list来存奇偶位置上的元素,当操作为1的时候,将输出顺序在前面的list(刚开始是存奇数的list),将其首元素插入到队尾,同时调整奇偶数list的输出顺序
    当操作位2的时候,调整奇偶数的输出顺序。最后按照奇偶数的输出顺序输出即可。

    代码

    
    import java.util.ArrayDeque;
    import java.util.Deque;
    import java.util.Scanner;
    
    public class Main{
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int m = sc.nextInt();
            int []A = new int[m];
            // 用来存刚开始的奇数位置
            Deque<Integer> deque1 = new ArrayDeque<>();
            // 用来存刚开始的偶数位置
            Deque<Integer> deque2 = new ArrayDeque<>();
            // 初始顺序为先输出奇数序列
            int order = 1;
            for (int i = 0; i < m; i++) {
                A[i] = sc.nextInt();
            }
    
            // 存入数据
            for (int i = 1; i <= n; i++) {
                if ( (i & 1) == 1) {
                    deque1.add(i);
                } else {
                    deque2.add(i);
                }
            }
            
            for (int i = 0; i < m ; i++) {
                // 将队首元素放入队尾,同时更换输出顺序
                if (A[i] == 1) {
                    if (order == 1) {
                        int temp = deque1.poll();
                        deque1.addLast(temp);
                    } else {
                        int temp = deque2.poll();
                        deque2.addLast(temp);
                    }
                }
                // 更换顺序(将队首元素插到队尾,或者奇偶数调换,都会引起,输出的顺序)
                order = (order & 1) == 1 ? 2 : 1;
            }
    
            if ((order & 1) == 1) {
                System.out.print(deque1.poll() + " " + deque2.poll());
                while (!deque1.isEmpty()) {
                    System.out.print(" " + deque1.poll());
                    System.out.print(" " + deque2.poll());
                }
            } else {
                System.out.print(deque2.poll() + " " + deque1.poll());
                while (!deque1.isEmpty()) {
                    System.out.print(" " + deque2.poll());
                    System.out.print(" " + deque1.poll());
                }
            }
        }
    }
    
    
  • 相关阅读:
    zend studio 的vim插件
    [转]mysql性能优化慢查询分析、优化索引和配置
    mysql日期函数整理
    系统进行多语言支持转换
    table xxxx is full 报警问题处理
    坚持的力量
    $_SERVER内容的意义
    smarty 注册函数使用初体验
    Mysql输入错误时取消输入
    js:
  • 原文地址:https://www.cnblogs.com/bears9/p/13548161.html
Copyright © 2011-2022 走看看