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());
            }
        }
    }
}

posted @ 2020-08-23 07:46  Bears9  阅读(141)  评论(0编辑  收藏  举报